2012-01-04 76 views
1

我正在尝试使用现有路线定义语言路线。我们的想法是让工作下列网址:使用Zend_Router将语言路线添加到现有路线

/en/dashboard/usability-testing/setup 
/fr/dashboard/usability-testing/setup 

的问题是,他们只是没了语言(/仪表/可用性测试/设置)工作,当然总是默认为英语。

这里是我的application.ini路线定义:

resources.router.routes.defaultmodule.type = Zend_Controller_Router_Route_Module 
resources.router.routes.defaultmodule.defaults.mod ule = "default" 

resources.router.routes.testing.type = Zend_Controller_Router_Route 
resources.router.routes.testing.route = "dashboard/usability-testing/:action/*" 
resources.router.routes.testing.defaults.controlle r = "usability-testing" 
resources.router.routes.testing.defaults.action = "index" 

resources.router.routes.study.type = Zend_Controller_Router_Route 
resources.router.routes.study.route = "dashboard/usability-study/:action/*" 
resources.router.routes.study.defaults.controller = "usability-study" 
resources.router.routes.study.defaults.action = "index" 

resources.router.routes.language.type = Zend_Controller_Router_Route 
resources.router.routes.language.route = ":language" 
resources.router.routes.language.reqs.language = "^(ca|es|en|fr)$" 
resources.router.routes.language.defaults.language = "en" 
resources.router.routes.language.chain = "testing, study, defaultmodule" 

resources.router.routes.default.type = Zend_Controller_Router_Route_Chain 
resources.router.routes.default.chain = "language, defaultmodule" 

可能有人帮助吗? 谢谢 @avergess

回答

0

也许在这种情况下,您需要使用类似Apache .htaccess或至少使用web服务器而不是Zend_Route进行路由。

我看到,当你有更复杂和更大的规则集时,最好使用apache,因为它比在PHP中做同样的更快更快。

您需要为每种语言添加规则。您需要知道,使用domain.com/lang并非最佳选择。马特卡茨suggests使用国家或子域的域名,如果你使用子域名(lang.domain.com),你的问题可以用Apache RewriteRules解决。

+0

引用请! – 2012-01-04 13:30:37

+0

http://googlewebmastercentral.blogspot.com/2010/03/working-with-multi-regional-websites.html – 2012-01-04 14:39:08

+1

感谢您的回答。那么,你认为Zend_Route不可能这么做吗?不幸的是,此时改变语言路线(domain.com/lang),不是一种选择 – 2012-01-04 20:51:45