是否有 Apache2 指令明確設定目錄清單 403 Forbidden?

是否有 Apache2 指令明確設定目錄清單 403 Forbidden?

是否有指令明確設定目錄列表沒有索引文件到 403 禁止?預設行為回傳 404,因為模組目錄找不到索引檔。

我沒有mod_autoindex已載入並Options設定為 just FollowSymLinks。我嘗試了-Indexes,但仍然返回 404。

<IfModule dir_module>
    DirectoryIndex index.php index.html index.htm
    DirectorySlash On
</IfModule>

<Directory /var/www>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

我不應該關心,但我使用的是 Apache 2.4。

答案1

經過多次嘗試和錯誤後回答我自己的問題。這個答案應該適用於 Apache >= 2.0。

總之,Indexes該指令的選項似乎Options需要mod_autoindex。現在您可以停止閱讀,除非您想了解有關預設 Apache 行為的更多資訊。

更多資訊

關鍵是有沒有mod_autoindex已載入。如果未加載,設定Options -Indexes將無效並返回 404,這是有道理的,因為 mod_dirDirectoryIndex指令找不到您的索引檔。如果已加載,設定Options -Indexes將返回 403。

這在某種程度上有所解釋Apache 選項文檔在下面索引,這有點令人困惑,因為它Options是 mod_core 的一部分。

索引

如果請求對應到目錄的 URL,且該目錄中沒有 DirectoryIndex(例如,index.html),則 mod_autoindex 將傳回該目錄的格式化清單。

……並解釋了mod_autoindex頁:

使用選項+索引啟用自動索引產生。有關更多詳細信息,請參閱選項指令。

我的測試顯示啟用/停用 .htaccess 檔案AllowOverride是無關緊要的。

相關內容