Aya*_*avi 1 php zend-framework url-rewriting url-routing
我有两条路线
; category route
resources.router.routes.category.type = "Zend_Controller_Router_Route"
resources.router.routes.category.route = "shopping/:idTwo/:id/*"
resources.router.routes.category.defaults.module = "default"
resources.router.routes.category.defaults.controller = "shopping"
resources.router.routes.category.defaults.action = "category"
resources.router.routes.category.reqs.id = \w+
resources.router.routes.category.reqs.id = \d+
; searchroute
resources.router.routes.search.type = "Zend_Controller_Router_Route"
resources.router.routes.search.route = "shopping/search/:id/*"
resources.router.routes.search.defaults.module = "default"
resources.router.routes.search.defaults.controller = "shopping"
resources.router.routes.search.defaults.action = "search"
resources.router.routes.search.reqs.id = \w+
Run Code Online (Sandbox Code Playgroud)
类别路由必须与http://mrc.localhost/shopping/Childrens-Clothing/98等网址匹配,并且工作正常
搜索路径必须与http://mrc.localhost/shopping/search/dvd+box+set 和http://mrc.localhost/shopping/search/123等网址匹配.
搜索路径适用于没有关键字(:id)作为整数的网址,如http://mrc.localhost/shopping/search/dvd+box+set但如果关键字只是整数,那么类别路由器就像网址一样优先http://mrc.localhost/shopping/search/123,因此调用类别操作而不是搜索操作,因为您看到:idTwo可以是任何字符串,它匹配"搜索"因此使用类别路由但我希望搜索路由是无论什么是关键字,都使用
路线实际上是按REVERSE顺序匹配的,因此将更具体的路线放在底部,将更多的路线放在最上面.你的订单没问题.
当我测试时,我发现ID(123)的搜索URL工作正常,但另一个('dvd + box + set')不起作用.你需要:id为\ w + - 'dvd + box + set'中的+是导致它失败的原因.
如果您希望搜索/*转到搜索操作,请放弃要求,并在操作控制器代码中执行更多操作,否则非\ w + ID将导致它转到类别路由.
干杯