Dot-Htaccess
Apache ErrorLog:不能在 401 ErrorDocument 指令中使用完整的 URL — 忽略
我使用 Apache 上的 .htaccess 文件來顯示自定義錯誤文件。這一切都很好。
但是我仍然在日誌中看到很多這樣的錯誤:
[Thu Aug 13 10:38:31 2020] [notice] [client AH00113: /home/www/.htaccess:6 cannot use a full URL in a 401 ErrorDocument directive --- ignoring!
我的 .htacess 的第 6 行看起來直截了當:
ErrorDocument 401 http://error.foo.bar/401.html
為什麼不能使用 401 ErrorDocument 指令中的完整 URL?錯誤或功能?
您只能使用本地 URL 路徑來響應程式碼 401。這是因為
當您指定一個指向遠端 URL 的 ErrorDocument(即前面帶有 http 等方法的任何內容)時,Apache HTTP Server 將向客戶端發送重定向,告訴它在哪裡可以找到該文件,即使該文件最終在同一台伺服器上。這有幾個含義,最重要的是客戶端不會收到原始錯誤狀態程式碼,而是會收到重定向狀態程式碼。這反過來又會混淆網路機器人和其他嘗試使用狀態程式碼來確定 URL 是否有效的客戶端。此外,如果您在 ErrorDocument 401 中使用遠端 URL,客戶端將不知道提示使用者輸入密碼,因為它不會收到 401 狀態程式碼。因此,如果您使用 ErrorDocument 401 指令,則它必須引用本地文件。