Dot-Htaccess

在 httaccess 中拒絕訪問的不同方法

  • November 2, 2020

我想拒絕通過 .htaccess 訪問給定文件夾中的所有文件和子目錄。我找到了這兩種方法:

deny from all
<Files "*">
   Order Deny,Allow
   Deny from all
</Files> 

這兩者有什麼區別嗎?

如評論中所述,DenyandOrder指令以前在 Apache 2.4 上已棄用(我假設您正在使用它 - 見下文)。並且僅用於向後兼容 (mod_access_compat)。這些只能在Apache 2.2和更早版本上使用。

deny from all

是的,這確實“拒絕”了對目前目錄、文件和子目錄的所有訪問。但是,如果沒有明確說明Order處理DenyandAllow指令的位置,那麼它如何與相關指令互動就沒有明確定義。

Allow子目錄.htaccess文件中的指令應該覆蓋它。

<Files "*">
    Order Deny,Allow
    Deny from all
</Files>

通過將指令包裝在<Files>容器中,您將強制塊被延遲合併。與上面的範例不同,這可能會覆蓋Allow子目錄中的指令。除非Allow子目錄中的指令也包含在<Files>容器中。這可能是可取的,也可能不是可取的。在大多數情況下,這不是必需的。

*只是一個匹配所有文件(和目錄)的萬用字元。

Apache 2.4上,您應該改用Require指令 (mod_authz_core):

Require all denied

關於<Files "*">容器的相同內容也適用於此。

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