<-
Apache > HTTP 服务器 > 文档 > 2.4 版 > 模块

Apache 模块 mod_dir

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

描述提供“尾部斜杠”重定向和提供目录索引文件
状态基础
模块标识符dir_module
源文件mod_dir.c

摘要

目录的索引可以来自以下两个来源之一

这两个功能是分开的,这样您就可以完全删除(或替换)自动索引生成,如果您需要的话。

当服务器收到对 URL http://servername/foo/dirname 的请求时,会发出“尾部斜杠”重定向,其中dirname 是一个目录。目录需要尾部斜杠,因此mod_dir会发出重定向到http://servername/foo/dirname/

Support Apache!

指令

错误修复清单

另请参见

top

DirectoryCheckHandler 指令

描述切换此模块在配置了其他处理程序时的响应方式
语法DirectoryCheckHandler On|Off
默认值DirectoryCheckHandler Off
上下文服务器配置、虚拟主机、目录、.htaccess
覆盖索引
状态基础
模块mod_dir
兼容性在 2.4.8 及更高版本中可用。2.4 之前的版本隐式地表现得好像指定了“DirectoryCheckHandler ON”。

DirectoryCheckHandler指令确定mod_dir是否应该检查目录索引或在为当前 URL 配置了其他处理程序时添加尾部斜杠。处理程序可以通过诸如SetHandler之类的指令或通过其他模块(例如mod_rewrite)在每个目录替换期间设置。

在 2.4 之前的版本中,如果为 URL 配置了任何其他处理程序,此模块不会采取任何操作。这允许即使为整个目录指定了SetHandler指令,也能提供目录索引,但它也可能导致与诸如mod_rewrite之类的模块发生冲突。

top

DirectoryIndex 指令

描述当客户端请求目录时要查找的资源列表
语法DirectoryIndex disabled | local-url [local-url] ...
默认值DirectoryIndex index.html
上下文服务器配置、虚拟主机、目录、.htaccess
覆盖索引
状态基础
模块mod_dir

DirectoryIndex指令设置要查找的资源列表,当客户端通过在目录名称末尾指定 / 来请求目录的索引时。Local-url 是服务器上相对于请求目录的文档的(%-编码)URL;它通常是目录中文件的名称。可以给出多个 URL,在这种情况下,服务器将返回它找到的第一个 URL。如果所有资源都不存在并且设置了Indexes 选项,服务器将生成它自己的目录列表。

示例

DirectoryIndex index.html

那么对http://example.com/docs/ 的请求将返回http://example.com/docs/index.html(如果存在),或者如果不存在,则列出目录。

请注意,文档不需要相对于目录;

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

如果目录中既不存在index.html 也不存在index.txt,则会导致执行 CGI 脚本/cgi-bin/index.pl

单个参数“disabled”会阻止mod_dir搜索索引。如果在“disabled”之前或之后有任何参数,即使它们也是“disabled”,也会按字面意思解释“disabled”参数。

注意:同一上下文中的多个DirectoryIndex指令将添加到要查找的资源列表中,而不是替换它们。

# Example A: Set index.html as an index page, then add index.php to that list as well.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex index.php
</Directory>

# Example B: This is identical to example A, except it's done with a single directive.
<Directory "/foo">
    DirectoryIndex index.html index.php
</Directory>

# Example C: To replace the list, you must explicitly reset it first:
# In this example, only index.php will remain as an index resource.
<Directory "/foo">
    DirectoryIndex index.html
    DirectoryIndex disabled
    DirectoryIndex index.php
</Directory>
top

DirectoryIndexRedirect 指令

描述配置目录索引的外部重定向。
语法DirectoryIndexRedirect on | off | permanent | temp | seeother | 3xx-code
默认值DirectoryIndexRedirect off
上下文服务器配置、虚拟主机、目录、.htaccess
覆盖索引
状态基础
模块mod_dir
兼容性在 2.3.14 及更高版本中可用

默认情况下,DirectoryIndex 被选中并透明地返回给客户端。DirectoryIndexRedirect会导致发出外部重定向。

参数可以是

示例

DirectoryIndexRedirect on

http://example.com/docs/ 的请求将返回对http://example.com/docs/index.html 的临时重定向(如果存在)。

top

DirectorySlash 指令

描述切换尾部斜杠重定向的开启或关闭
语法DirectorySlash On|Off
默认值DirectorySlash On
上下文服务器配置、虚拟主机、目录、.htaccess
覆盖索引
状态基础
模块mod_dir

DirectorySlash指令确定mod_dir是否应该修复指向目录的 URL。

通常,如果用户请求没有尾部斜杠的资源,该资源指向目录,mod_dir会将其重定向到相同的资源,但带有尾部斜杠,出于一些正当理由

如果您不希望这种效果并且上述原因不适用于您,您可以关闭重定向,如下所示。但是,请注意,这样做可能会导致安全隐患。

# see security warning below!
<Location "/some/path">
    DirectorySlash Off
    SetHandler some-handler
</Location>

安全警告

关闭尾部斜杠重定向可能会导致信息泄露。考虑这样一种情况,其中mod_autoindex处于活动状态(Options +Indexes)并且DirectoryIndex设置为有效的资源(例如,index.html)并且没有为该 URL 定义其他特殊处理程序。在这种情况下,带有尾部斜杠的请求将显示index.html 文件。但是,没有尾部斜杠的请求将列出目录内容

另请注意,某些浏览器可能会错误地将 POST 请求更改为 GET(从而丢弃 POST 数据),当发出重定向时。

top

FallbackResource 指令

描述为不映射到文件的请求定义默认 URL
语法FallbackResource disabled | local-url
默认值disabled - httpd 将返回 404(未找到)
上下文服务器配置、虚拟主机、目录、.htaccess
覆盖索引
状态基础
模块mod_dir
兼容性disabled 参数在 2.4.4 及更高版本中可用

使用此方法为任何不映射到文件系统中任何内容的 URL 设置处理程序,否则将返回 HTTP 404(未找到)。例如

FallbackResource /not-404.php

将导致对不存在文件的请求由not-404.php 处理,而对存在文件的请求不受影响。

通常希望单个文件或资源处理对特定目录的所有请求,除了那些对应于现有文件或脚本的请求。这通常被称为“前端控制器”。

在早期版本的 httpd 中,这种效果通常需要mod_rewrite,以及使用-f-d 测试文件和目录是否存在。现在只需要一行配置。

FallbackResource /index.php

现有文件(如图像、css 文件等)将照常提供服务。

如果不需要从父目录继承,请使用disabled 参数禁用该功能。

在子 URI 中,例如http://example.com/blog/,此子 URI 必须作为local-url 提供

<Directory "/web/example.com/htdocs/blog">
    FallbackResource /blog/index.php
</Directory>
<Directory "/web/example.com/htdocs/blog/images">
    FallbackResource disabled
</Directory>

回退处理程序(在本例中为/blog/index.php)可以通过服务器变量REQUEST_URI 访问原始请求的 URL。例如,要在 PHP 中访问此变量,请使用$_SERVER['REQUEST_URI']

可用语言:  en  |  fr  |  ja  |  ko  |  tr 

top

评论

注意
这不是问答部分。此处放置的评论应指向有关改进文档或服务器的建议,如果它们已被实施或被认为无效/离题,可能会被我们的版主删除。有关如何管理 Apache HTTP Server 的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的邮件列表