我知道这是一个常见的问题,但我不确定为什么这在我的本地主机(WAMP)上失败。
我想将 500 错误重定向到我的登录页面。我尝试了以下方法:
ErrorDocument 500 http://localhost/mysite/login.php
ErrorDocument 500 C:/wamp64/www/mysite/login.php
ErrorDocument 500 mysite/login.php
ErrorDocument 500 login.php
这些都无法重定向到我的登录页面。
答案1
我正在用 PHP 测试一些东西。我想确认一下如果我禁用错误报告会发生什么。正如预期的那样,我得到了一个 500 错误。我想用 htaccess 为此配置一个重定向
您无法定义 ErrorDocument 来.htaccess
处理这个问题。
display_errors
当关闭并且应用程序中发生不可恢复的错误时,PHP 本身将返回一个空的 500 响应。
要定制/处理此响应,您需要定义自己的自定义 PHP 错误处理程序。 https://www.php.net/manual/en/book.errorfunc.php
(但请注意,如果你有一个致命的解析错误在您的脚本中,那么您的错误处理程序可能仍然不会被调用 - 但这在生产服务器上永远不会发生。)
您能指出一些相关文献吗?
不幸的是,我没有一个中心参考点。这真的只是它的运作方式......
Apache ErrorDocument 仅在 Apache 本身触发错误响应时才会触发。(尽管自定义 500 ErrorDocument 不会在以下情况下触发:全部Apache 500 响应,如果定义得较晚,.htaccess
可能根本无法捕获太多信息。这应该在服务器配置/虚拟主机中定义。)
当 PHP 发送响应时,要触发 Apache ErrorDocument,Apache 需要拦截并覆盖该响应 - 但这并不会发生。就像您可能从 PHP 脚本发送 404 一样,Apache 不会拦截此响应来发送 Apache 404 响应。