2013-08-19 30 views
0

我有以下途径如同Symfony的2不仅仅是前缀的确切路径

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错误。然后我尝试转义特殊的正则表达符号“^”和“$”,即“\ ^/\ $”。但是这也不起作用。

+0

嗯,这不太可能是你的问题。你可以显示你的security.yml吗? – cheesemacfly

+0

您可能想要更改您的'security.yml'文件并让您的防火墙处理重定向。请参阅文档[here](http://symfony.com/doc/current/book/security.html) – Brewal

+0

问题“已解决”。见下面的评论回答。 – user2690527

回答

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路由器弄点儿:匹配看看会发生什么。

+0

问题解决。但我不知道为什么和如何。经过几次'php app/console cache:clear'迭代,浏览器缓存清理并重新启动Web服务器后,它突然按预期工作。 > :( 但是你错了,我唯一的意图是把主页“/”重定向到一个已经存在的特定页面,如果一个URL不存在,那么标准错误行为就好了,但是无论如何,谢谢。 – user2690527

+0

有时候一把锤子也可以工作。 – Cerad

相关问题