Apache HTTP Server 2.4 版
描述 | 提供“尾部斜杠”重定向和提供目录索引文件 |
---|---|
状态 | 基础 |
模块标识符 | dir_module |
源文件 | mod_dir.c |
目录的索引可以来自以下两个来源之一
index.html
。DirectoryIndex
指令设置此文件的名称。这由mod_dir
控制。mod_autoindex
提供。这两个功能是分开的,这样您就可以完全删除(或替换)自动索引生成,如果您需要的话。
当服务器收到对 URL http://servername/foo/dirname
的请求时,会发出“尾部斜杠”重定向,其中dirname
是一个目录。目录需要尾部斜杠,因此
会发出重定向到mod_dir
http://servername/foo/dirname/
。
描述 | 切换此模块在配置了其他处理程序时的响应方式 |
---|---|
语法 | DirectoryCheckHandler On|Off |
默认值 | DirectoryCheckHandler Off |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_dir |
兼容性 | 在 2.4.8 及更高版本中可用。2.4 之前的版本隐式地表现得好像指定了“DirectoryCheckHandler ON”。 |
指令确定DirectoryCheckHandler
是否应该检查目录索引或在为当前 URL 配置了其他处理程序时添加尾部斜杠。处理程序可以通过诸如mod_dir
之类的指令或通过其他模块(例如SetHandler
)在每个目录替换期间设置。mod_rewrite
在 2.4 之前的版本中,如果为 URL 配置了任何其他处理程序,此模块不会采取任何操作。这允许即使为整个目录指定了
指令,也能提供目录索引,但它也可能导致与诸如SetHandler
之类的模块发生冲突。mod_rewrite
描述 | 当客户端请求目录时要查找的资源列表 |
---|---|
语法 | 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”会阻止
搜索索引。如果在“disabled”之前或之后有任何参数,即使它们也是“disabled”,也会按字面意思解释“disabled”参数。mod_dir
注意:在同一上下文
中的多个
指令将添加到要查找的资源列表中,而不是替换它们。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>
描述 | 配置目录索引的外部重定向。 |
---|---|
语法 | DirectoryIndexRedirect on | off | permanent | temp | seeother | 3xx-code |
默认值 | DirectoryIndexRedirect off |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_dir |
兼容性 | 在 2.3.14 及更高版本中可用 |
默认情况下,
被选中并透明地返回给客户端。DirectoryIndex
会导致发出外部重定向。DirectoryIndexRedirect
参数可以是
on
:对索引资源发出 302 重定向。off
:不发出重定向。这是 mod_dir 的传统行为。permanent
:对索引资源发出 301(永久)重定向。temp
:这与on
的效果相同。seeother
:对索引资源发出 303 重定向(也称为“See Other”)。3xx-code
:发出由所选 3xx 代码标记的重定向。DirectoryIndexRedirect on
对http://example.com/docs/
的请求将返回对http://example.com/docs/index.html
的临时重定向(如果存在)。
描述 | 切换尾部斜杠重定向的开启或关闭 |
---|---|
语法 | DirectorySlash On|Off |
默认值 | DirectorySlash On |
上下文 | 服务器配置、虚拟主机、目录、.htaccess |
覆盖 | 索引 |
状态 | 基础 |
模块 | mod_dir |
指令确定DirectorySlash
是否应该修复指向目录的 URL。mod_dir
通常,如果用户请求没有尾部斜杠的资源,该资源指向目录,
会将其重定向到相同的资源,但带有尾部斜杠,出于一些正当理由mod_dir
mod_autoindex
正常工作。由于它不会在链接中发出路径,因此它将指向错误的路径。DirectoryIndex
将仅针对带有尾部斜杠的请求目录进行评估。如果您不希望这种效果并且上述原因不适用于您,您可以关闭重定向,如下所示。但是,请注意,这样做可能会导致安全隐患。
# 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 数据),当发出重定向时。
描述 | 为不映射到文件的请求定义默认 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']
。