我知道這是一個常見問題,但我不確定為什麼這會在我的本地主機(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 本身觸發錯誤回應時,才會觸發 Apache ErrorDocument。 (儘管自訂的 500 ErrorDocument 不會被觸發全部Apache 500 回應以及在後期定義的它.htaccess
可能根本不會捕捉太多內容。這應該在伺服器配置/虛擬主機中定義。
為了在 PHP 發送回應時觸發 Apache ErrorDocument,Apache 需要攔截並覆蓋回應 - 但這種情況不會發生。就像您可能從 PHP 腳本發送 404 一樣,Apache 不會攔截此訊息來發送 Apache 404 回應。