Apache-2.2

將錯誤 400 錯誤請求重定向到自定義頁面時出現問題

  • August 2, 2020

我已將.htaccess文件編輯為以下內容:

ErrorDocument 404 /index.php?page=page-not-found
ErrorDocument 400 /index.php?page=bad-request

現在錯誤 404 正確重定向,但是如果我輸入像http://example.com/%22%%5E$%%5E&%C2%A3&伺服器這樣的地址,則不會重定向 400 錯誤,而是顯示預設的 apache 消息。我究竟做錯了什麼?

來自Apache 文件的引用:

儘管可以覆蓋大多數錯誤消息,但在某些情況下,無論 ErrorDocument 的設置如何,都會使用內部消息。特別是,如果檢測到格式錯誤的請求,將立即停止正常的請求處理並返回內部錯誤消息。這對於防止由錯誤請求引起的安全問題是必要的。

因此,如果您想要重定向錯誤 400,您應該取消註釋Apache 配置文件中的ErrorDocument指令,httpd.conf如下所示:

# Some examples:
#ErrorDocument 500 http://foo.example.com/cgi-bin/tester
ErrorDocument 400 /cgi-bin/bad_request.pl
#ErrorDocument 401 /subscription_info.html
#ErrorDocument 403 "Sorry can't allow you access today" 

並重新啟動 Apache 伺服器。

引用自:https://serverfault.com/questions/158122