我只是对路由配置中的 symfony 正则表达式模式有点麻烦。
我想同时匹配/keyword
和/keyword/
URL。/
字符是可选的。
这是我的模式:
pattern: /{keyword}/?
/keyword/
匹配模式,而不匹配/keyword
。
我应该如何写模式?
如果添加尾部斜杠,则它是可选的——用户将从不带斜杠的路径重定向到带有斜杠的路径。因此,该/{keyword}/
模式适用于/{keyword}
和/{keyword}/
。
然而,如果你定义它时不带斜杠/{keyword}
——它只会起作用/{keyword}
。
我认为您不能在路线中使用 RegEx 模式。keyword
可能需要具有特定的 RegEx 模式,但这是另一回事。
如果您使用的是 YML,那么我认为最好的做法是拥有两条不同的路线:
route1:
pattern: /{keyword}
...
route2:
pattern: /{keyword}/
...
如果您使用注释,您可以将它们都放在控制器操作的顶部:
/**
* @Route("/{keyword}");
* @Route("/{keyword}/");
*/
在您的功能所在的控制器中使用注释:
/**
* Function
*
*
* @Route("your/route/{keyword}")
* @Route("your/route/{keyword}/")
*/
您将能够使用这两条路线访问此功能。