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
服务器将仅遵循符号链接,这些符号链接的目标文件或目录由与该链接相同的用户标识拥有。