Apache-2.2

自定義 403 錯誤頁面未顯示

  • September 27, 2020

我想限制對某些文件夾(例如,包括、xml 和日誌)的訪問,因此我給了它們 700 個權限,並為它們中的所有文件提供了 600 個權限。首先,這是限制訪問的正確方法嗎?

我的根目錄中有一個 .htaccess 文件,用於處理重寫和錯誤文件。根目錄中有兩個頁面 - 403.php 和 404.php - 用於 403 和 404 錯誤。我將這些規則添加到我的 .htaccess 文件中:

ErrorDocument 404 /404.php
ErrorDocument 403 /403.php

現在,404 頁面工作得很好。當我嘗試訪問“包含”文件夾時,403 頁面不顯示 - 我得到了標準的 apache 403 錯誤頁面,說“此外,在嘗試使用 ErrorDocument 處理請求時遇到了 404 Not Found 錯誤。”

但是,當我嘗試在瀏覽器中訪問 .htaccess 文件(在 Web 根目錄中)時,我得到了我的自定義 403 錯誤頁面。為什麼會這樣?

include/ 文件夾中是否有 .htaccess 文件?它有ErrorDocument 403指令嗎?

如果那個覆蓋了父級,那麼這可能會導致您描述的問題。

嘗試將ErrorDocument指令放在您的 httpd.conf 或 vhost 文件中。

您在這些請求的訪問和錯誤日誌中看到了什麼?

還值得三重檢查 403 行肯定說ErrorDocument 403 /403.php而不是ErrorDocument 403 403.php. 那個小錯字會導致您描述的所有症狀。

聊天后更新:

最終的解決方案是讓 Apache 使用者可以讀取包含目錄並將其添加到 .htaccess 中:

 <Location /includes>
   Order Deny,Allow
   Deny from all
 </Location>

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