Язык как поддомен в Zend 1.9

Я играю с Zend 1.9 и хотел бы, чтобы языковой параметр был субдоменом.

Нравится: http://en.site.com

Можно ли получить язык в .htaccess и установить для него переменную среды, которую я могу использовать в Zend?

Каков наилучший способ добиться того, чего я хочу?

-- добавлен --:

Я добавил это в свой route.ini:

[routes]

routes.lif.type = "Zend_Controller_Router_Route_Hostname"
routes.lif.route = ":language.domain.:tld"
routes.lif.reqs.language= "[a-z]{2}"
routes.lif.defaults.controller = "index"
routes.lif.defaults.action = "index"
routes.lif.defaults.language = "en"

; default
routes.lif.chains.default.type = "Zend_Controller_Router_Route"
routes.lif.chains.default.route = "/:controller/:action"
routes.lif.chains.default.defaults.controller = index
routes.lif.chains.default.defaults.action = index

; register
routes.lif.chains.register.type = "Zend_Controller_Router_Route"
routes.lif.chains.register.route = "/register"
routes.lif.chains.register.defaults.controller = "register"
routes.lif.chains.register.defaults.action = "newuser"

; details
routes.lif.chains.band.type = "Zend_Controller_Router_Route"
routes.lif.chains.band.route = "/details/:name"
routes.lif.chains.band.defaults.controller = "details"
routes.lif.chains.band.defaults.action = "getdetails"

Это работает хорошо, если я захожу на: http://en.domain.com/details/joe Но, к сожалению, если я удалю субдомен: http://domain.com/details/joe по умолчанию действие не вызывается, и я получаю

Сообщение: Действие "joe" не существует и не попало в __call()

У вас есть идея?

Спасибо, парни.

Тьерри


person thierryb    schedule 24.10.2009    source источник


Ответы (1)


Вам повезло — есть Zend_Controller_Router_Route_Hostname, который можно использовать вместо этого именно для этой цели. Если вы хотите добиться пользовательской маршрутизации в части после вашего домена, вам нужно взглянуть на Zend_Controller_Router_Route_Chain.

person David Snabel-Caunt    schedule 24.10.2009
comment
большое спасибо. Я добавил свои маршруты.ini, но у меня возникла проблема, см. мое редактирование. Спасибо еще раз - person thierryb; 26.10.2009
comment
В этом случае маршрут имени хоста не совпадает, поэтому следующий маршрут не используется. Вам нужно будет определить другой (обычный) маршрут, который делает то же самое, но не имеет ранее связанного маршрута с именем хоста. - person David Snabel-Caunt; 26.10.2009