使用Zend_Router将语言路由添加到现有路由

时间:2012-01-04 07:16:53

标签: php model-view-controller zend-framework zend-router

我正在尝试定义使用现有路线的语言路线。我们的想法是将工作做成以下网址:

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

问题是他们只在没有语言的情况下工作(/ 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

1 个答案:

答案 0 :(得分:0)

也许在这种情况下,您需要使用Apache .htaccess或至少使用Web服务器而不是Zend_Route来解决您的问题。

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

您需要为每种语言添加规则。您需要知道,使用domain.com/lang不是最佳选择。 Matt Cutts suggests使用域名为国家或子域名,如果您使用子域名(lang.domain.com),您的问题可以通过Apache RewriteRules解决。