mod_dir

优质
小牛编辑
132浏览
2023-12-01
说明指定目录索引文件以及为目录提供"尾斜杠"重定向
状态基本(B)
模块名dir_module
源文件mod_dir.c

概述

目录的索引可以有两个来源:

  • 一个由用户编写的文件,通常叫:index"https://www.xnip.cn/doc/apache22/mod/mod_dir">mod_dir提供的DirectoryIndex指令用于设置这个文件名。
  • 由服务器产生的一个列表。该功能由mod_autoindex提供。

这两个功能是相互独立的,所以你可以完全去除或替换索引的自动生成。

因为对目录的请求需要以一个"/"结尾,所以当服务器接收到对 http://servername/foo/dirname 的请求时,若dirname是一个目录,则mod_dir将会将其重定向到 http://servername/foo/dirname/

DirectoryIndex 指令

说明当客户端请求一个目录时寻找的资源列表
语法DirectoryIndex local-url [local-url] ...
默认值DirectoryIndex index"https://www.xnip.cn/doc/apache22/mod/directive-dict">作用域server config, virtual host, directory, .htaccess
覆盖项Indexes
状态基本(B)
模块mod_dir

DirectoryIndex指令设置了当客户端在请求的目录名的末尾刻意添加一个"/"以表示请求该目录的索引时,服务器需要寻找的资源列表。Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个。若一个也没有找到,并且那个目录设置了Indexes选项,服务器将会自动产生一个那个目录中的资源列表。

示例

DirectoryIndex index"https://www.xnip.cn/doc/apache22/mod/directive-dict">说明打开或关闭目录结尾斜线(/)自动补全功能 语法DirectorySlash On|Off 默认值DirectorySlash On 作用域server config, virtual host, directory, .htaccess 覆盖项Indexes 状态基本(B) 模块mod_dir 兼容性仅在 Apache 2.0.51 及以后的版本中可用

DirectorySlash指令决定mod_dir是否通过在请求的URL结尾补上"/"使其重定向到其所指向的目录。

典型的,如果用户请求一个结尾没有"/"的资源,并且该资源指向一个目录,mod_dir将通过在请求的URL结尾补上"/"使其重定向到其所指向的目录。默认开启自动补全功能有以下原因:

  • 用户最后使用了规范的URL来请求资源。
  • mod_autoindex将会正确工作。因为它不会自动补全路径,所以将会指向错误的路径。
  • DirectoryIndex评估有"/"结尾的目录。
  • html页面中的相对URL引用将会正确工作。

如果你不希望这个自动补全功能生效,并且不在乎上述原因,你可以关闭它:

# 请参见下面的安全警告
<Location /some/path>
DirectorySlash Off
SetHandler some-handler
</Location>

安全警告

关闭目录自动重定向可能会导致信息泄漏。考虑mod_autoindex被激活(Options +Indexes)并且DirectoryIndex也正确设置到一个资源(比如:index"/"结尾的URL将得到index"/"结尾的请求将得到目录列表。