Ich有一个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编码,但那不能解决我的问题..
编辑:我也不能依赖路线的顺序,因为我从许多不同的捆绑包中导入路线..
答案 0 :(得分:1)
#This one before the other to be considered !
route2:
host/my/route/category/{param}
requirements:
param: ".+"
route1:
host/my/route/{param}
requirements:
param: ".+"
答案 1 :(得分:0)
第一条路线的参数不能为category
,否则会匹配而不是忽略它。您可以更改正则表达式以忽略此值:
route1:
host/my/route/{param}
requirements:
param: "(?!category/).*[^/]$"
route2:
host/my/route/category/{param}
requirements:
param: ".*[^/]$"
现在,将忽略名为category
后跟斜杠的参数,并且除了第二条路线外,模式不会匹配。