What I am trying to do is use a subdomain for a special mobile version of my ZF application. Ideally it would map to a specific controller like the example below, but at this point I’m willing to try any method that works:
Ex. m.domain.com/action would route to the “mobile” controller and whatever action is specified.
I found a number of similar questions here and elsewhere on the Google but I get the feeling I am missing something obvious because no matter what route I set up it’s just being ignored. I suspect it has something to do with htaccess but could be wrong there.
Here is the route I currently have in my bootstrap file (but I have tried a number of different patters here). Right now I’m just trying to get it to show the plain index for simplicity:
$hostRoute = new Zend_Controller_Router_Route_Hostname(':subdomain.domain.com',
array(
'controller' => 'index',
'action' => 'index'
)
);
$plainPathRoute = new Zend_Controller_Router_Route(':controller/:action/*',
array('controller' => 'index', 'action' => 'index'));
$controller->getRouter()->addRoute('mobile', $hostRoute->chain($plainPathRoute));
And my htaccess has:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Now there are 2 methods I have been trying out here because I have been so frustrated.
- Create the subdomain “m” inside of my hosting account
- Subdomain “app” does not exist on my web hosting account
For method 1, it just goes to the generic index.html file that is in domain.com/m/. Method 2 tells me the page doesn’t exist.
I’m really hoping there is something obvious here that I’m missing. Like I mentioned above, I’m not picky about how exactly this gets executed, so long as I can have a subdomain point to a specific controller. It’s going to be a very simplified version of the site so I don’t really need to do anything complex.
Thanks for your help.
First of all, you need to configure your virtual host to handle multiple domains:
You may also do this by adding new subdomain pointing to your site root, via your hosting panel options.
Then you may create a route chain, as in your example, or handle the switch yourself, e.g. in the controller plugin: