2009-08-27 65 views
10

我是Zend框架的新手,我使用.ini文件在我的应用程序中添加路由。在Zend框架中添加基于子域的路由

我有2条路线的不同模块,这些模块

resources.router.routes.news_view.type = "Zend_Controller_Router_Route_Regex" 
resources.router.routes.news_view.route = "([0-9\-]+)/([a-zA-Z0-9\-]+)\.html" 
resources.router.routes.news_view.defaults.module = "news" 
resources.router.routes.news_view.defaults.controller = "index" 
resources.router.routes.news_view.defaults.action = "view" 
resources.router.routes.news_view.map.1 = "date" 
resources.router.routes.news_view.map.2 = "title" 

resources.router.routes.edu_view.type = "Zend_Controller_Router_Route_Regex" 
resources.router.routes.edu_view.route = "([0-9\-]+)/([a-zA-Z0-9\-]+)\.html" 
resources.router.routes.edu_view.defaults.module = "education" 
resources.router.routes.edu_view.defaults.controller = "index" 
resources.router.routes.edu_view.defaults.action = "article" 
resources.router.routes.edu_view.map.1 = "date" 
resources.router.routes.edu_view.map.2 = "title" 

url模式是像

http://news.mysite.com/27-08-09/sample.html 

http://education.mysite.com/27-08-09/sample.html 

我面对是最后定义的路径被分配给两个模块的问题。

任何人都可以为此提出解决方案。

回答

15

喜在web浏览很多,我想出了这个解决我的问题

resources.router.routes.www.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.www.route = ":module.findchennai.com" 
resources.router.routes.www.defaults.module = "www" 
resources.router.routes.www.chains.index.type = "Zend_Controller_Router_Route" 
resources.router.routes.www.chains.index.route = ":controller/:action/*" 
resources.router.routes.www.chains.index.defaults.controller = "index" 
resources.router.routes.www.chains.index.defaults.action = "index" 

上面的代码与子域映射模块

resources.router.routes.news.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.news.route = "news.findchennai.com" 
resources.router.routes.news.defaults.module = "news" 

resources.router.routes.edu.type = "Zend_Controller_Router_Route_Hostname" 
resources.router.routes.edu.route = "education.findchennai.com" 
resources.router.routes.edu.defaults.module = "education" 

resources.router.routes.edu.chains.list.type = "Zend_Controller_Router_Route" 
resources.router.routes.edu.chains.list.route = ":categ/:page" 
resources.router.routes.edu.chains.list.defaults.controller = "index" 
resources.router.routes.edu.chains.list.defaults.action = "category" 
resources.router.routes.edu.chains.list.defaults.page = 1 

resources.router.routes.news.chains.list.type = "Zend_Controller_Router_Route" 
resources.router.routes.news.chains.list.route = ":categ/:page" 
resources.router.routes.news.chains.list.defaults.controller = "index" 
resources.router.routes.news.chains.list.defaults.action = "category" 
resources.router.routes.news.chains.list.defaults.page = 1 

这解决了我所面临的问题,现在可以正确地映射到以下网址

http://news.mysite.com/27-08-09/sample.html 
http://education.mysite.com/27-08-09/sample.html 

不过如果有一个人知道如何优化上面的代码进一步,请让我知道。

+0

感谢您提供深入的信息。正是我需要的。 – 2010-08-20 02:18:15

0

做两子域调用到相同的index.php?

如果他们不只能设置基础上,适当的子域,而不是设置在两个子域两条路线的路线。

如果他们这样做无论是从$ _ SERVER [“HTTP_HOST”]变量读取和设置基于子域的正确途径或在您的.htaccess文件中设置环境变量,所以你可以告诉哪个子网域你英寸

+1

嗨,我 已经添加了子域和路线地图,将其单独的路线。 resources.router.routes.www.type =“Zend_Controller_Router_Route_Hostname” resources.router.routes.www.route =“:module.mysite.com” resources.router.routes.www.defaults.module =“www” resources.router.routes.www.chains.index.type = “Zend_Controller_Router_Route的” resources.router.routes.www.chains.index.route = “:控制器/:动作/ *” resources.router.routes.www。 chains.index.defaults.controller =“index” resources.router.routes.www.chains.index.defaults.action =“index” – Nizam 2009-08-28 05:14:52

+0

请将其添加为答案。 – smack0007 2009-08-28 08:29:43