> Apache2.2 中文手册 > DirectoryIndex

apache模块 mod_dir

说明 指定目录索引文件以及为目录提供"尾斜杠"重定向
状态 基本(B)
模块名 dir_module
源文件 mod_dir.c

概述

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

  • 一个由用户编写的文件,通常叫:index.HTMLmod_dir提供的DirectoryIndex指令用于设置这个文件名。
  • 由服务器产生的一个列表。该功能由mod_autoindex提供。

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

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

DirectoryIndex

DirectoryIndex 指令

说明 当客户端请求一个目录时寻找的资源列表
语法 DirectoryIndex local-url [local-url] ...
默认值 DirectoryIndex index.html
作用域 server config, virtual host, directory, .htAccess
覆盖项 Indexes
状态 基本(B)
模块 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

DirectoryIndex

DirectorySlash 指令

说明 打开或关闭目录结尾斜线(/)自动补全功能
语法 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.html)同时没有其他处理器用于URL的情况。此时,以"/"结尾的URL将得到index.html文件,而不以"/"结尾的请求将得到目录列表

上一篇:
下一篇: