Php Symfony路由正则表达式:如何编写可选字符?
我只是对路由配置中的symfony regex模式有点小麻烦 我想同时匹配Php Symfony路由正则表达式:如何编写可选字符?,php,regex,symfony,Php,Regex,Symfony,我只是对路由配置中的symfony regex模式有点小麻烦 我想同时匹配/关键字和/关键字URL。/字符是可选的。 这是我的模式: pattern: /{keyword}/? /keyword/与模式匹配,而/keyword不匹配 我应该如何编写模式?我认为在路由中不能有正则表达式模式。可以要求关键字具有特定的正则表达式模式,但这是另一回事 如果您使用的是YML,那么我认为最好的办法是有两条不同的路线: route1: pattern: /{keyword} ... ro
/关键字
和/关键字
URL。/
字符是可选的。这是我的模式:
pattern: /{keyword}/?
/keyword/
与模式匹配,而/keyword
不匹配
我应该如何编写模式?我认为在路由中不能有正则表达式模式。可以要求
关键字
具有特定的正则表达式模式,但这是另一回事
如果您使用的是YML,那么我认为最好的办法是有两条不同的路线:
route1:
pattern: /{keyword}
...
route2:
pattern: /{keyword}/
...
如果使用的是注释,则可以将它们都放在控制器操作的顶部:
/**
* @Route("/{keyword}");
* @Route("/{keyword}/");
*/
在功能所在的控制器中,使用注释:
/**
* Function
*
*
* @Route("your/route/{keyword}")
* @Route("your/route/{keyword}/")
*/
您可以通过两种路径访问此功能。如果添加尾部斜杠,则此功能是可选的-用户将从没有斜杠的路径重定向到有斜杠的路径。因此,
/{keyword}/
模式将同时适用于/{keyword}
和/{keyword}/
但是,如果您定义它时没有尾部斜杠-
/{keyword}
,它将仅适用于/{keyword}
。谢谢。实际上,我注意到/keyword url请求301重定向到/keyword/。这似乎是相当好的搜索引擎优化:)不要创建第二条路线。“@Route(“acme/{keyword}/”)就足够了。