2011-04-30 111 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在單個文件中做同樣的事情。

相關問題