php – Apache的ErrorDocument指令不重定向
我的.htaccess文件中有一堆ErrorDocument指令,以捕获几乎所有可能的错误,Apache可能会抛出一个用户,并将所有用户重定向到我的错误控制器,然后再以更友好的方式呈现错误.但是,它似乎没有工作.
例如,当我输入一个无效的URL,如mysite.com/””##$##$!我总是得到Apache的默认403错误消息,而不是重定向到我的errors.php文件.以下是我使用的指令.我需要做任何其他事情来使其发挥作用吗? (AllowOverride全部设置) ErrorDocument 403 /errors.php 如果这是绝对的自定义错误处理的错误方式,请让我知道,我会感谢向正确的方向微调. 谢谢! 编辑: 编辑3:我刚刚尝试在.htaccess文件中放置ErrorDocument 200“message”,没有任何事情发生,我打开的任何页面都会正常打开.最糟糕的情况是,这应该会陷入无限循环.最好的情况,应该输出“消息”.它没有,它只是忽略了ErrorDocument. Apache的访问日志注意到一个正常的200 OK标题,但它完全被.htaccess忽略.
在这个问题上有一些不同的误解.以下PHP代码:
header("HTTP/1.0 500 Internal Server Error"); die(); 将不会触发Apache错误页面 – 它触发浏览器的默认错误页面.一旦控制权被赋予了PHP,它就不会回到Apache来进行错误处理. ErrorDocument仅适用于错误代码,而不是成功代码.它在文档中 Syntax: ErrorDocument error-code document http://httpd.apache.org/docs/current/mod/core.html#errordocument 如果您误认为某种浏览器错误页面出现服务器错误,那么这可能是您的主要问题的原因.除非您的自定义错误处理程序输出一定量的数据,否则一些浏览器将始终显示自己的错误页面.确保您的输出大小至少为几千字节. 您的问题的原因很可能只是Apache的内置行为与您选择的测试URL相结合.从ErrorDocument文档:
编辑:如何在Apache中模拟500错误.我的第一个想法是.htaccess中的语法错误,但这不会触发自定义错误处理程序.我发现最简单的方法是通过添加以下行来启用.htaccess中的CGI: ErrorDocument 500 /500.php Options +ExecCGI AddHandler cgi-script .pl 然后添加一个崩溃的perl脚本: #!/usr/bin/perl safasfdsfdd_(*EYFIUOBAF(_*AS^FD_(*AWHD{ 您需要确保perl脚本可以由apache的用户执行.这显示了我的自定义500处理程序. 但是,您在使用PHP时不太可能触发Apache 500,所以这可能不是一个有用的测试. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |