2011-06-14 143 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