2011-04-30 105 views
1

我想设置多个域名来使用相同的框架,但我似乎无法让Zend的路由器屈服于我的意愿。如何让Zend Route根据域名使用不同的模块

有大量的使用子域名,而是试图使他们的工作对整个域似乎不工作,我希望它的例子。

这里是我来最接近的,但它似乎并没有工作:

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" 

有什么建议?

+0

它以什么方式不起作用?模块没有设置?回想一下,文档建议链接到主机名路径的路径路径。也许没有链接可以让模块设置在别的地方?只是想大声...... – 2011-04-30 03:26:45

+0

这是正确的,模块没有被设置 - 它只是默认为“非模块化”/应用程序/控制器目录中的控制器。 – 2011-04-30 06:02:22

回答

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值和设定一些要求/默认在那些,但我认为这表达了这个想法。

未测试 - 其实我从来没有与链接的路线播放之前 - 但似乎这样的事情需要做主机路由的工作。

+0

太棒了,谢谢!这只是一件事,除了一件事:'mysite plain'需要像'mysite,plain'这样逗号分隔。另外,不要忘记首先注册模块'resources.modules [] =“mysite”' – 2011-04-30 17:57:33

+1

好极了,很高兴它有帮助。为了完整起见,我会更新答案主体以包含您的更正/备注。干杯! – 2011-04-30 18:40:06

+0

由于某些原因,只要添加其他参数,此方法就会失败,并回退到默认模块..例如: 'www.mysite.com/index/index'转到mysite模块...但是www。 mysite.com/index/index/p/2'转到默认模块。 – 2011-04-30 21:14:10

0

我实际使用的基础上$_SERVER['SERVER_NAME']的电流值,这是由网络服务器配置不同的配置文件这样做过。 (HTTP_HOST是客户端发送的。)

您可以使用INI file sections and inheritance在单个文件中做同样的事情。

相关问题