apache 中 DirectoryIndex 指令 和 MultiViews 选项的区别

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 通过启用内容协商,自动选择最适合客户端的文件类型。

posted on 2025-12-15 09:59  一直小爪子  阅读(25)  评论(0)    收藏  举报