匹配Symfony 2的确切路径而不仅仅是前缀

时间:2013-08-19 15:01:20

标签: regex symfony symfony-routing

我有以下路线

hekdb_login_show:
    path: /Login/showForm
    defaults: { _controller: HEKdbBundle:Login:showForm }

hekdb:
  path: /
  defaults:
    _controller: FrameworkBundle:Redirect:redirect
    route: hekdb_login_show
    permanent: true

(实际上还有更多,但这两个就足够了。)在将主机名重定向到登录表单后,最后一条路由应该重定向到网站的每个人只有“/”。

问题是最后一个路由规则中的路径“/”与每个路径匹配,因为每个路径都以“/”开头。结果是无限重定向循环。

我读到该路径被解释为正则表达式,所以我尝试了模式“^ / $”。但这导致PHP错误。然后我尝试转义特殊的正则表达式符号“^”和“$”,即“\ ^ / \ $”。但这也不起作用。

1 个答案:

答案 0 :(得分:0)

最后包括此路线以获取已通过任何现有路线的所有内容。我认为这就是你真正想要的。

zayso_core_unknown:
    pattern:  /{url}
    defaults: { _controller: ZaysoAreaBundle:Public:index, url: "unknown" }
    requirements:
       url: ".+"

不记得我从哪里得到它但它能完成这项任务。

你错了/匹配一切。我经常把这作为我的第一条路线:

zayso_core_index:
    pattern:  /
    defaults: { _controller: ZaysoAreaBundle:Public:index }

它按预期工作。

您可能想要与app / console路由器混淆:匹配以查看会发生什么。