【发布时间】:2012-09-25 13:11:03
【问题描述】:
我的 symfony2(2.0.16) 路由有问题。
我尝试运行 2 条路线,例如
route1:
host/my/route/{param}
requirements:
param: ".*[^/]$"
route2:
host/my/route/category/{param}
requirements:
param: ".*[^/]$"
你可以想象,第二条路线不会被调用,无论如何..
我真正想做的是搜索和专门搜索,因此我还需要允许点、加号和斜杠..
我尝试将斜杠编码(urlencode 为 %2F 或 %252F)以便我可以更改要求,但 symfony 总是在路由之前对其进行解码,所以如果我删除要求,我会收到路由错误。
我想过使用base64编码,但这不能解决我的问题..
编辑:我也不能依赖路线的顺序,因为我从许多不同的包中导入路线..
【问题讨论】:
-
另外你可能需要交换路由,因为路由是从上到下测试的。因为第二个更具体,但它高于不太具体的一个(与注释“早期路线总是赢”相比)。请让自己熟悉 Symfony2 路由的一般工作方式:symfony.com/doc/2.0/book/routing.html
-
感谢答案,但我在帖子中提到的方式我可以不依赖于路线的顺序,我很清楚基本的路由工作流程,我读过食谱如果我使用允许参数斜杠的要求,它将“吃掉”路线,因为它在我的示例中(我的模式看起来不同,因为我不喜欢最后的斜杠)
标签: symfony routing special-characters urlencode