1

我想设置多个域名以使用相同的框架,但我似乎无法让 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"

有什么建议么?

4

2 回答 2

3

基于这个 Nabble 线程,看起来您需要添加一个路径路由,然后将该路径路由链接到您的主机名路由。

所以也许是这样的:

; 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"

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

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

于 2011-04-30T07:08:28.610 回答
0

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

您可以通过使用INI 文件部分和继承在单个文件中执行相同的操作。

于 2011-04-30T05:08:02.100 回答