您的位置:首页 > Web前端 > HTML

Apach目录和默认文件index.html的关系

2010-07-17 19:52 381 查看

Apache模块 mod_dir

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

概述

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

一个由用户编写的文件,通常叫:
index.html
mod_dir
提供的
DirectoryIndex
指令用于设置这个文件名。

由服务器产生的一个列表。该功能由
mod_autoindex
提供。

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

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






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.htmlindex.txt /cgi-bin/index.pl 


这样的设置将导致在
index.html
index.txt
都不存在的情况下执行CGI脚本
/cgi-bin/index.pl






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
文件,而不以"/"结尾的请求将得到目录列表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐