Symfony - 404始终重定向到登录页面,而不是显示自定义404页面

时间:2011-06-14 15:14:31

标签: symfony1 symfony-1.4

我遇到了一个相当奇怪的问题。

我的整个应用程序默认是安全的(在apps / frontend / config / 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”(/)。

但是,在制作中,我会看到每个无效网址的登录页面。

我只想显示自定义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进行该动作。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

问题是该操作 404 ,而不是404Success。尝试

404:
  is_secure: false

成功是symfony默认返回的视图。

答案 1 :(得分:1)

使用默认的symfony 404时 - 这对我有用(错误停止显示在apache错误日志中)

  1. 创建文件夹“apps / frontend / modules / default / config”
  2. 创建“settings.yml”
  3. 添加以下行:

    error404:
      is_secure: false
    

答案 2 :(得分:0)

找到解决方案:

有点奇怪,但确实有效。

在我的用户security.yml中,我不得不改变:

404Success:
  is_secure: false

到此:

all:
  is_secure: false

这不是一个真正的问题,因为我在用户模块中只有登录和404操作....但我很惊讶我必须关闭整个模块的安全性而不仅仅关闭404上的安全性行动。不太确定为什么忽略'404Success'。奇怪....