之前都看到很多人在問apache目錄列表的問題,如何讓apache把目錄中的文件列表出來,然后禁止apache目錄列表,又如何在訪問某個目錄時默認指向 index.php .這些在apache配置文檔稍作配置就可以做到了。
DirectoryIndex 指令
DirectoryIndex指令設(shè)置了當(dāng)客戶端在請求的目錄名的末尾刻意添加一個"/"以表示請求該目錄的索引時,服務(wù)器需要尋找的資源列表。Local-url(%已解碼的)是一個相對于被請求目錄的文檔的URL(通常是那個目錄中的一個文件)。可以指定多個URL,服務(wù)器將返回最先找到的那一個。用到apache的mod_dir模塊。舉例:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
這里,首先尋找 index.php, 沒有找到再去尋找 index.html
若一個也沒有找到或沒有設(shè)置DirectoryIndex,這就涉及到目錄列表的問題了。
如果那個目錄設(shè)置了Indexes選項,服務(wù)器將會自動產(chǎn)生一個那個目錄中的資源列表。
Options 指令
說明: 配置在特定目錄使用哪些特性
語法: Options [+|-]可選項 [[+|-]可選項] ...
默認值: Options All
上下文: 服務(wù)器配置, 虛擬主機, 目錄, .htaccess
覆蓋項: Options
狀態(tài): 核心
模塊: core
option可以為None ,在這種情況下,將不啟用任何額外特性。或設(shè)置為以下選項中的一個或多個:
All
除MultiViews之外的所有特性。這是默認設(shè)置。
ExecCGI
允許使用mod_cgi執(zhí)行CGI腳本。
FollowSymLinks
服務(wù)器允許在此目錄中使用符號連接。
注意:即使服務(wù)器會使用符號連接,但它不會改變用于匹配<Directory>段的路徑名。
注意:如果此配置位于<Location>配置段中,則此設(shè)置會被忽略。
Includes
允許使用mod_include提供的服務(wù)器端包含。
IncludesNOEXEC
允許服務(wù)器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以從ScriptAlias目錄使用"#include virtual"虛擬CGI腳本。
Indexes
如果一個映射到目錄的URL被請求,而此目錄中又沒有DirectoryIndex(例如:index.html),那么服務(wù)器會返回由mod_autoindex生成的一個格式化后的目錄列表。
MultiViews
允許使用mod_negotiation提供內(nèi)容協(xié)商的"多重視圖"(MultiViews)。
SymLinksIfOwnerMatch
服務(wù)器僅在符號連接與其目的目錄或文件的擁有者具有相同的uid時才使用它。
舉個例子,允許目錄列表:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
這里設(shè)置允許 /web/docs 的目錄列表。
禁止列表則可以這么設(shè)置
<Directory /web/docs>
Options None
</Directory>