<-
Apache > HTTP服务器 > 文档 > V2.0 > 模块

Apache模块 mod_dir

说明将指向目录的URL映射到一个索引文件
状态Base
模块名dir_module
源文件mod_dir.c

概述

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

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

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

top

DirectoryIndex 指令

说明 当客户端请求一个目录时寻找的资源列表
语法DirectoryIndex local-url [local-url] ...
默认值DirectoryIndex index.html
作用域server config, virtual host, directory, .htaccess
覆盖项Indexes
状态Base
模块mod_dir

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

例子

DirectoryIndex index.html

上例配置指示对http://myserver/docs/的请求返回http://myserver/docs/index.html(若存在),或返回该目录下的所有资源的列表。

注意,指定的文档不一定必须位于被请求的目录下,也可以指定一个绝对URL来指向其他位置:

DirectoryIndex index.html index.txt /cgi-bin/index.pl

这样的设置将导致在index.htmlindex.txt都不存在的情况下执行CGI脚本/cgi-bin/index.pl

top

DirectorySlash 指令

说明 打开或关闭目录重定向的功能
语法DirectorySlash On|Off
默认值DirectorySlash On
作用域server config, virtual host, directory, .htaccess
覆盖项Indexes
状态Base
模块mod_dir
兼容性 2.0.51及以后版本中可用

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

代表性的,如果用户请求一个资源并且结尾没有"/",若该资源是指向一个目录,mod_dir将通过在请求的URL结尾补上"/"使其重定向到其所指向的目录。但是在原始请求中就必须加上结尾的"/"有以下好处:

如果你不希望这个自动重定向的功能生效,并且不在乎上述影响,你可以关闭它:

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

安全警告

关闭目录自动重定向可能会导致信息泄漏。考虑mod_autoindex被激活(Options +Indexes)、DirectoryIndex也正确设置到一个资源(比如:index.html)并且没有其他处理器用于URL的情况。这样的情况下,以"/"结尾的URL将得到index.html文件,而不以"/"结尾的请求将得到目录列表