企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Apache模块 mod_dir | [说明](#calibre_link-11) | 指定目录索引文件以及为目录提供"尾斜杠"重定向 | | --- | --- | | [状态](#calibre_link-12) | 基本(B) | | [模块名](#calibre_link-13) | dir_module | | [源文件](#calibre_link-14) | mod_dir.c | ### 概述 目录的索引可以有两个来源: * 一个由用户编写的文件,通常叫:`index.html` 。`mod_dir`提供的`DirectoryIndex`指令用于设置这个文件名。 * 由服务器产生的一个列表。该功能由`mod_autoindex`提供。 这两个功能是相互独立的,所以你可以完全去除或替换索引的自动生成。 因为对目录的请求需要以一个"/"结尾,所以当服务器接收到对 `http://servername/foo/dirname` 的请求时,若`dirname`是一个目录,则`mod_dir`将会将其重定向到 `http://servername/foo/dirname/` 。 ## DirectoryIndex 指令 | [说明](#calibre_link-18) | 当客户端请求一个目录时寻找的资源列表 | | --- | --- | | [语法](#calibre_link-19) | `DirectoryIndex local-url [local-url] ...` | | [默认值](#calibre_link-24) | `DirectoryIndex index.html` | | [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess | | [覆盖项](#calibre_link-66) | Indexes | | [状态](#calibre_link-21) | 基本(B) | | [模块](#calibre_link-22) | 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.html`或`index.txt`都不存在的情况下执行CGI脚本`/cgi-bin/index.pl` 。 ## DirectorySlash 指令 | [说明](#calibre_link-18) | 打开或关闭目录结尾斜线(/)自动补全功能 | | --- | --- | | [语法](#calibre_link-19) | `DirectorySlash On&#124;Off` | | [默认值](#calibre_link-24) | `DirectorySlash On` | | [作用域](#calibre_link-20) | server config, virtual host, directory, .htaccess | | [覆盖项](#calibre_link-66) | Indexes | | [状态](#calibre_link-21) | 基本(B) | | [模块](#calibre_link-22) | mod_dir | | [兼容性](#calibre_link-137) | 仅在 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`文件,而**不以"/"结尾的请求将得到目录列表**。