2013-08-19 28 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

相關問題