Добавление субдоменных маршрутов в Zend Framework - PullRequest
10 голосов
/ 27 августа 2009

Я новичок в Zend Framework, я использую файл .ini для добавления маршрутов в свое приложение.

У меня есть 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

Проблема, с которой я сталкиваюсь, заключается в том, что последний определенный маршрут назначен обоим модулям.

Может кто-нибудь предложить решение для этого.

Ответы [ 2 ]

15 голосов
/ 01 сентября 2009

Привет, после долгих поисков в Интернете, я нашел решение для моей проблемы

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

Это решает проблему, с которой я столкнулся, и теперь может корректно отображаться на следующие URL

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

Тем не менее, если кто-то знает, как оптимизировать приведенный выше код, пожалуйста, дайте мне знать.

0 голосов
/ 27 августа 2009

Обе субдомены вызывают один и тот же index.php?

Если они не только устанавливают маршрут на основе соответствующего субдомена, а не задают оба маршрута в обоих субдоменах.

Если они либо читают из переменной $ _SERVER ['HTTP_HOST'] и задают правильный маршрут на основе субдомена, либо задают переменную среды в файле .htaccess, чтобы вы могли определить, в каком субдомене вы находитесь.

...