DirectoryIndex 指令

DirectoryIndex 是用來指定當訪問某個目錄時,服務器應該返回的默認文件。它由 dir_module 模塊提供,用於網站的首頁或目錄中的默認文件。

當訪問某個目錄時,如果 URL 中沒有明確指定文件名,服務器會按順序查找 DirectoryIndex 指令中列出的文件,直到找到一個存在的文件並返回給客户端。


例如:DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

表示,如果請求的目錄下有 index.html,則返回該文件;如果沒有,就繼續查找下一個文件,如 index.cgi 等。


例如:HTTP 請求 URL:http://10.0.28.11:8000

如果 DirectoryIndex 配置為:DirectoryIndex index.html index.php
此時若該虛擬主機的根目錄下有 index.html,那麼 index.html 會作為默認返回的首頁文件。


MultiViews 選項

MultiViews 是 mod_negotiation 模塊提供的一個 Options 的配置選項,它允許 Apache 根據客户端的請求自動協商和選擇文件內容。

所以當客户端請求一個資源時,MultiViews 可以讓服務器返回一個合適的文件類型,甚至是在沒有明確文件名的情況下也可以。

啓用 MultiViews 後,如果請求的是一個沒有擴展名的文件,apache 會以該文件名做為基名,在目錄中查找所有可變體文件(也就是基本名字一樣,後綴不一致),然後根據文件的類型和客户端支持的格式進行選擇。


例如:HTTP 請求 URL:http://10.0.29.22:8000/company

apache 會以company 作為基名,然後找到最合適的文件進行返回,沒找到就返回 404 Not Found。



所以兩者的關鍵區別:

  • DirectoryIndex 指定在請求目錄時返回的默認文件
  • MultiViews 通過啓用內容協商,自動選擇最適合客户端的文件類型。