Вы не можете использовать один маршрут для нелинейного отображения с более чем двумя вариантами, поэтому вам придется использовать более одного;) Без знания целей каждого домена трудно привести какие-либо примеры.Предполагая, что example.com
и www.example.com
одинаковы и являются маршрутом по умолчанию, а stage
и dev
отображаются в соответствующий модуль (а также andreaw
и joe
в качестве параметров) (и добавляются в маршрутизаторкурс):
$stageRoute = new Zend_Controller_Router_Route_Hostname('stage.example.com', array('module' => 'stage');
$devRoute = new Zend_Controller_Router_Route_Hostname(':user.dev.example.com', array('module' => 'dev');
Это отобразит следующее (:module/:controller/:action
):
stage.example.com
на stage/index/index
dev.example.com
на dev/index/index
joe.example.com
до dev/index/index/user/joe
www.example.com
до default/index/index
Словами: если поддомен stage
и ничего больше, перейдите к модулю stage
с параметрами по умолчанию.Если subdomain
равно dev
, перейдите к модулю dev
с параметром user
.В противном случае используйте Zend-маршрут по умолчанию.
Будьте осторожны, чтобы маршрутизаторы с именами хостов соответствовали любому пути.Так что вы, вероятно, должны сопоставить путь позади него с другим маршрутом и использовать цепной маршрутизатор .
Для сценического маршрута это может выглядеть так:
$stageRoute = new Zend_Controller_Router_Route_Hostname('stage.example.com', array('module' => 'stage');
$pathRoute = new Zend_Controller_Router_Route(':revision', array('controller' => 'browse'));
$stageRoute->chain($pathRoute);
Это отобразит stage.example.com/5434
на stage/browse/index/revision/5434
.