將目錄索引限制為經過身份驗證的使用者
本質上,我要做的是將目錄索引限制為來自我的 Apache 伺服器上的 htpasswd 文件的經過身份驗證的使用者。這是我到目前為止所擁有的。
AuthUserFile C:\XXXXXXXXX\htpasswd AuthGroupFile /dev/null AuthName "Password Protected!" AuthType Basic <Limit DirectoryIndex> require valid-user </Limit>
如果我將“DirectoryIndex”替換為“GET POST”,我已經確認這種身份驗證適用於普通目錄訪問或文件。我嘗試通過將 DirectoryIndex 放在那裡進行猜測,但它似乎不起作用。在Google上搜尋了這個問題並查看了關於 serverfault 的其他一些問題後,我很茫然。如果有人知道如何做到這一點,那就太好了。
謝謝。
DirectoryIndex
(mod_dir 的一部分)設置在客戶端請求目錄時服務的文件。因此,要限制對該文件的訪問,您需要使用<Files>
(或<FilesMatch>
)指令。(您不能引用DirectoryIndex
指令引用的任何文件。)例如,如果您
DirectoryIndex
的設置為index.html
,則:<Files "index.html"> AuthUserFile C:\XXXXXXXXX\htpasswd AuthGroupFile /dev/null AuthName "Password Protected!" AuthType Basic Require valid-user </Files>
如果您有多個可能的
DirectoryIndex
文件,那麼您可以使用一個<FilesMatch>
容器,而不是使用一個正則表達式作為其參數。例如,如果DirectoryIndex index.php index.html
設置了則:<FilesMatch "^index\.(html|php)$"> # etc. </FilesMatch>
或者,通過“目錄索引”,您是指生成的目錄列表(mod_autoindex)嗎?但這與
DirectoryIndex
它本身沒什麼關係,除了(如果啟用)目錄列表僅在DirectoryIndex
文件不存在時生成。在這種情況下,為了只保護目錄列表(即裸目錄),您也可以使用
Files
容器,但指定一個空文件。例如:# Protect directory-listing only <Files ""> # etc. </Files>
<Limit DirectoryIndex>
該
Limit
指令將隨附的指令限制為規定的 HTTP請求方法(即 GET、POST 等)。DirectoryIndex
是 Apache 指令,而不是 HTTP 請求方法,所以這是無效的。