httpd允许通过放置在Web树中的特殊文件来分散管理配置。这个特殊文件的文件名默认为 .htaccess
,但可以通过指令 AccessFileName 指定为其他名称。放置在 .htaccess
文件中的指令适用于放置文件的目录和所有子目录。这些 .htaccess
文件遵循与主配置文件相同的语法。由于每次请求都会读取 .htaccess
文件,因此对这些文件所做的更改会立即生效。
AccessFileName
描述: 设置分布式配置文件的文件名
语法: AccessFileName filename [filename] …
默认: AccessFileName .htaccess
语境: 系统配置文件,<VirtualHost>
片段
状态: Core
模块: Core
处理请求时,如果为该目录启用了分布式配置文件,则服务器将在文档路径的每个目录中寻找文件,此名称列表中的第一个被找到的文件将被加载为配置文件。
AllowOverride
描述: 允许在分布式配置文件(通常是.htaccess)中使用的指令类型
语法: AllowOverride All|None|directive-type [directive-type] …
语境: <Directory>
片段
默认: AllowOverride None (2.3.9之后), AllowOverride All (2.3.8之前)
状态: Core
模块: Core
当服务器找到一个.htaccess文件(文件名是由 AccessFileName 指定的)时,它需要知道该文件中声明的哪些指令可以覆盖先前的配置指令。
AllowOverride只有在非正则表达式定义directory-path的 <Directory>
中可用,且不能用在 <Location>, <DirectoryMatch> 或者 <Files>
中。
- 当此指令设置为
None
并且 AllowOverrideList 也设置为None
时,.htaccess
文件将被完全忽略。在这种情况下,服务器甚至不会尝试读取.htaccess
文件。 - 当此指令设置为
All
时,则在位置
中标明了 “.htaccess” 的任何指令都可以在.htaccess
文件中使用。 - 此指令还可以设置为下表几种指令类型的一种或几种:
指令类型 | 类型描述 | 指令列表 |
---|---|---|
AuthConfig | 授权相关的指令 | AuthDBMGroupFile、 AuthDBMUserFile、 AuthGroupFile、 AuthName、 AuthType、 AuthUserFile、 Require |
FileInfo | 文档相关的指令 | 文档类型:ErrorDocument、 ForceType、 LanguagePriority、 SetHandler、 SetInputFilter、 SetOutputFilter、 Add、 Remove。文档元数据: Header、 RequestHeader、 SetEnvIf、 SetEnvIfNoCase、 BrowserMatch、 CookieExpires、 CookieDomain、 CookieStyle、 CookieTracking、 CookieName。重写: RewriteEngine、 RewriteOptions、 RewriteBase、 RewriteCond、 RewriteRule。别名重定向: Redirect、 RedirectTemp、 RedirectPermanent、 RedirectMatch。 Action |
Indexes | 控制目录索引的指令 | AddDescription、 AddIcon、 AddIconByEncoding、 AddIconByType、 DefaultIcon、 DirectoryIndex、 FancyIndexing、 HeaderName、 IndexIgnore、 IndexOptions、 ReadmeName |
Limit | 控制主机访问的指令 | Allow、 Deny、 Order |
Options | 控制特定目录特征的指令 | Options[=option,…],可以给出等号,后跟逗号(没有空格)分隔的Options指令的选项列表,表示哪些Options指令的语法被允许 |
AllowOverrideList
描述: 允许在分布式配置文件(通常是.htaccess)中使用的具体指令
语法: AllowOverrideList None|directive [directive] …
默认: AllowOverrideList None
语境: <Directory>
片段
状态: Core
模块: Core
AllowOverride
设置允许的指令类型,如 FileInfo
;AllowOverrideList
设置允许使用的具体指令,如 ErrorDocument
。
指令被 AllowOverride
或者 AllowOverrideList
中的一个设为允许覆盖,即为允许。
Options
描述: 配置特定目录中可用的功能
语法: Options [+|-]option [[+|-]option] …
默认: Options FollowSymlinks
语境: 系统配置文件, <VirtualHost>
片段, <Directory>
片段,.htaccess
状态: Core
模块: Core
该指令可以设置为 None
,则不会启用任何附加功能,也可以设置为以下选项的一个或多个:
All
除
MultiViews
外的所有功能ExecCGI
允许执行 CGI 脚本
FollowSymLinks
服务器将遵循此目录中的符号链接。这是默认设置。
Includes
允许使用
mod_include
模块提供的服务端包含IncludesNOEXEC
允许使用
mod_include
模块提供的服务端包含,但是可执行的 cmd 或 cgi 命令被禁用Indexes
访问目录时,如果目录中没有
DirectoryIndex
指定的目录索引文件,则显示该目录下所有文件的格式化列表MultiViews
允许内容协商。
访问目录中不存在的对象时,如访问
http://localhost/test/target
,则Apache
会寻找该目录下的所有target.*
文件,如果目录下存在target.jpg
文件,则会把这个文件返回给客户端SymLinksIfOwnerMatch
服务器将仅遵循符号链接,这些符号链接的目标文件或目录由与该链接相同的用户标识拥有。