描述: | 提供“尾随斜杠”重定向并提供目录索引文件 |
---|---|
状态: | 基础 |
模块标识符: | 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
指令确定mod_dir
在为当前URL配置了其他处理程序时是应该检查目录索引还是添加斜杠。可以通过指令(例如)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
将导致CGI脚本/cgi-bin/index.pl
来执行,如果没有index.html
或index.txt
目录中的存在。
单个参数“ disabled”可防止mod_dir
搜索索引。如果参数“ 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>
描述: | 为目录索引配置外部重定向。 |
---|---|
句法: | 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重定向(也称为“查看其他”)。DirectoryIndexRedirect on
的请求http://example.com/docs/
将返回一个临时重定向(http://example.com/docs/index.html
如果存在)。
描述: | 切换尾部斜杠重定向打开或关闭 |
---|---|
句法: | DirectorySlash On|Off |
默认: | DirectorySlash On |
内容: | 服务器配置,虚拟主机,目录,.htaccess |
覆写: | 指标 |
状态: | 基础 |
模块: | mod_dir |
该DirectorySlash
指令确定是否
mod_dir
应修正指向目录的URL。
通常,如果用户请求的资源不带斜杠(指向目录),mod_dir
则将其重定向到相同的资源,但带斜杠(出于某些原因):
mod_autoindex
正常工作。由于它不会发出链接中的路径,因此它将指向错误的路径。DirectoryIndex
将仅针对带有尾部斜杠的目录进行评估
。如果您不希望这种效果,并且上述原因不适用于您,则可以关闭重定向,如下所示。但是,请注意,这样做可能会带来安全隐患。
# see security warning below! <Location "/some/path"> DirectorySlash Off SetHandler some-handler </Location>
关闭结尾的斜杠重定向可能会导致信息泄露。考虑一种情况,其中mod_autoindex
active(Options +Indexes
)并DirectoryIndex
设置为有效资源(例如
index.html
),并且没有为该URL定义其他特殊处理程序。在这种情况下,带有斜杠的请求将显示该
index.html
文件。但是没有斜杠的请求将列出目录内容。
还要注意,在发出重定向时,某些浏览器可能会将POST请求错误地更改为GET(从而丢弃POST数据)。
描述: | 为未映射到文件的请求定义默认URL |
---|---|
句法: | FallbackResource disabled | local-url |
默认: | disabled - httpd will return 404 (Not Found) |
内容: | 服务器配置,虚拟主机,目录,.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
)可以通过server变量访问原始请求的URL
REQUEST_URI
。例如,要在PHP中访问此变量,请使用$_SERVER['REQUEST_URI']
。