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