2011-06-14 141 views
1

我遇到了一個相當奇怪的問題。Symfony - 404總是重定向到登錄頁面而不是顯示自定義404頁面

我的整個應用程序默認緊固(在apps /前端/配置/ security.yml文件)

在我的設置,我已經(刪除CSRF令牌,check_lock等,這是不相關):

all: 
    .settings: 
    error_404_module: user 
    error_404_action: 404 
    use_security: on 
    login_module: user 
    login_action: login 

在用戶模塊的security.yml文件我有:

404Success: 
    is_secure: false 

在發展中,如果我去到一個無效的網址,我會得到標準的symfony調試頁面說法:

404 | Not Found | sfError404Exception 
Empty module and/or action after parsing the URL 

「/ blahblahfhfjhjdhdshdus」(/)。

但是,在製作過程中,我將以的登錄頁面顯示每無效的URL。

我只想顯示我的自定義404錯誤頁面。

我看着到PHP錯誤日誌,這就是我呈現:

> [Tue Jun 14 17:10:54 2011] [error] 
> [client 129.42.32.32] Empty module 
> and/or action after parsing the URL 
> "//blahblahfhfjhjdhdshdus" (/). [Tue 
> Jun 14 17:10:54 2011] [error] [client 
> 129.42.32.32] PHP Fatal error: Uncaught exception 'sfStopException' 
> in 
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php:96\nStack 
> trace:\n#0 
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php(55): 
> sfBasicSecurityFilter->forwardToLoginAction()\n#1 
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(1026): 
> sfBasicSecurityFilter->execute(Object(sfFilterChain))\n#2 
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(990): 
> sfFilterChain->execute()\n#3 
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(1026): 
> sfRenderingFilter->execute(Object(sfFilterChain))\n#4 
> /srv/www/foo.bar/cache/frontend/prod/config/config_core_compile.yml.php(660): 
> sfFilterChain->execute()\n#5 
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/exception/sfError404Exception.class.php(49): 
> sfController->forward('user', 404)\n#6 
> /srv/www/foo.bar/c in 
> /srv/www/foo.bar/lib/vendor/symfony/1.4/lib/filter/sfBasicSecurityFilter.class.php 
> on line 96 

,你可以在安全過濾器攔截(字不錯的選擇)404的動作,即使我爲這個行爲過度了全球security.yml。

任何想法?

謝謝!

回答

5

問題是,行動是,而不是404Success。嘗試

404: 
    is_secure: false 

成功是默認的symfony的返回的視圖。

+0

啊,當然!它只在viewSuite中放置actionSuccess。謝謝。 – Flukey 2011-06-15 11:57:15

0

發現解決方案:

有點奇怪,但它的工作。

在我的用戶security.yml,我不得不從:

404Success: 
    is_secure: false 

這樣:

all: 
    is_secure: false 

這不是真的,因爲我只有在登錄和404個行動的一個問題用戶模塊....但我很驚訝,我必須關閉整個模塊的安全性,而不是關閉404動作的安全性。不太清楚爲什麼它忽略了'404Success'。奇怪....

1

當使用默認的symfony 404 - 這個工作對我來說(這些錯誤停止顯示在Apache的錯誤日誌上)

  1. 新建文件夾「應用程序/前端/模塊/默認/配置」
  2. 創建「settings.yml中」
  3. 添加以下行:

    error404: 
        is_secure: false