作者:我不是鱼
原贴:www.phpfans.net/blog/2/article/16.html#comment_29
之前都看到很多人在问apache目录列表的问题,如何让apache把目录中的文件列表出来,然后禁止apache目录列表,又如何在访问某个目录时默认指向 index.php .这些在apache配置文档稍作配置就可以做到了。
DirectoryIndex 指令
DirectoryIndex指令设置了当客户端在请求的目录名的末尾刻意添加一个"/"以表示请求该目录的索引时,服务器需要寻找的资源列表。Local-url(%已解码的)是一个相对于被请求目录的文档的URL(通常是那个目录中的一个文件)。可以指定多个URL,服务器将返回最先找到的那一个。用到apache的mod_dir模块。举例:
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
这里,首先寻找 index.php, 没有找到再去寻找 index.html
若一个也没有找到或没有设置DirectoryIndex,这就涉及到目录列表的问题了。
如果那个目录设置了Indexes选项,服务器将会自动产生一个那个目录中的资源列表。
Options 指令
说明: 配置在特定目录使用哪些特性
语法: Options [+|-]可选项 [[+|-]可选项] ...
默认值: Options All
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: Options
状态: 核心
模块: core
option可以为None ,在这种情况下,将不启用任何额外特性。或设置为以下选项中的一个或多个:
All
除MultiViews之外的所有特性。这是默认设置。
ExecCGI
允许使用mod_cgi执行CGI脚本。
FollowSymLinks
服务器允许在此目录中使用符号连接。
注意:即使服务器会使用符号连接,但它不会改变用于匹配<Directory>段的路径名。
注意:如果此配置位于<Location>配置段中,则此设置会被忽略。
Includes
允许使用mod_include提供的服务器端包含。
IncludesNOEXEC
允许服务器端包含,但禁用"#exec cmd"和"#exec cgi"。但仍可以从ScriptAlias目录使用"#include virtual"虚拟CGI脚本。
Indexes
如果一个映射到目录的URL被请求,而此目录中又没有DirectoryIndex(例如:index.html),那么服务器会返回由mod_autoindex生成的一个格式化后的目录列表。
MultiViews
允许使用mod_negotiation提供内容协商的"多重视图"(MultiViews)。
SymLinksIfOwnerMatch
服务器仅在符号连接与其目的目录或文件的拥有者具有相同的uid时才使用它。
举个例子,允许目录列表:
<Directory /web/docs>
Options Indexes FollowSymLinks
</Directory>
这里设置允许 /web/docs 的目录列表。
禁止列表则可以这么设置
<Directory /web/docs>
Options None
</Directory>
AllowOverride 选项详解
地址:http://www.ha ckbase.com/tech/2011-02-12/62562.html
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache
能够正常的读取.htaccess 文件的内容,就必须对.htaccess
所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即:
< Directory />
AllowOverride None
< /Directory>
在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。
而对于 URL rewrite 来说,至少需要把目录设置为:
< Directory /myblogroot/>
AllowOverride FileInfo
< /Directory>
而对于 URL rewrite 来说,至少需要把目录设置为:
AllowOverride的参数:
AuthConfig
允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
FileInfo
允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority,
SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove*
指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase,
BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking,
CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase,
RewriteCond, RewriteRule)和mod_actions中的Action指令。
Indexes
允许使用控
制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType,
DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore,
IndexOptions, ReadmeName, 等)。
Limit
允许使用控制主机访问的指令(Allow, Deny, Order)。
Options[=Option,...]
允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。