如何让Zend Route根据域名使用不同的模块

时间:2011-04-30 01:24:59

标签: php zend-framework zend-route

我想设置多个域名来使用相同的框架,但我似乎无法让zend的路由器屈服于我的意愿。

有很多使用子域名的示例,但尝试使它们适用于整个域似乎并不像我期望的那样有效。

这是我最接近的,但它似乎不起作用:

resources.router.routes.mysite.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.mysite.route = "www.mysite.com"
resources.router.routes.mysite.defaults.module = "mysite"

resources.router.routes.mysite1.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.mysite1.route = "www.mysite1.com"
resources.router.routes.mysite1.defaults.module = "mysite1"

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

基于this Nabble thread,您似乎需要添加路径路径,然后将该路径路由链接到主机名路由。

或许类似于:

; abstract routes to be used in chaining
resources.router.routes.plain.type = "Zend_Controller_Router_Route"
resources.router.routes.plain.abstract = true
resources.router.routes.plain.route = "/:controller/:action"
resources.router.routes.plain.defaults.controller = "index"
resources.router.routes.plain.defaults.action = "index"

resources.router.routes.mysite.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.mysite.abstract = true
resources.router.routes.mysite.route = "www.mysite.com"
resources.router.routes.mysite.defaults.module = "mysite"

resources.router.routes.mysite1.type = "Zend_Controller_Router_Route_Hostname"
resources.router.routes.mysite1.abstract = true
resources.router.routes.mysite1.route = "www.mysite1.com"
resources.router.routes.mysite1.defaults.module = "mysite1"

; now the actual (non-abstract) routes are chains of the abstract ones
resources.router.routes.mysite-plain.type = "Zend_Controller_Router_Route_Chain"
resources.router.routes.mysite-plain.chain = "mysite,plain"

resources.router.routes.mysite1-plain.type = "Zend_Controller_Router_Route_Chain"
resources.router.routes.mysite1-plain.chain = "mysite1,plain"

实际上,我们可能会使用像:site这样的占位符将两个抽象的mysiteX路由折叠成单个抽象路由,以代替mysiteX值并设置一些要求/默认值,但是我认为这传达了这个想法。

未经测试 - 实际上我之前从未玩过链式路线 - 但似乎需要这样的东西来使主机名路由工作。

答案 1 :(得分:0)

我之前通过实际使用基于当前值$_SERVER['SERVER_NAME']的不同配置文件来完成此操作,该值由Web服务器配置。 (HTTP_HOST是客户发送的。)

您可以使用INI file sections and inheritance在单个文件中执行相同的操作。