Apache 容器是对其他指令进行分组的特殊配置指令。
容器使用 XML 样式的标签,这意味着容器的开头是 <name>,结尾是 </name>。
httpd.apache.org/docs/current/sections.html 提供了所有容器指令的索引。
以下是容器的示例:
<LimitExcept method [method] ...>
此容器与 Limit 容器相反,它将访问控制指令限制为
除指定方法外的所有内容。
以下示例使用 LimitExcept 容器,但也说明了容器可以嵌套。
此示例通过将这些目录限制为只读来控制对 UserDir 目录的访问:
<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch \ IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>
Options 指令按目录控制服务器功能。
其中一些描述如下:
- MultiViews :允许页面以不同的语言显示,例如
- Indexes:如果未设置 DirectoryIndex 指令,则生成目录列表
- SymLinksIfOwnerMatch :如果指向的文件或者目录与链接具有相同的所有者,则遵循符号链接
<Directory directory-path>
此容器将指令应用于目录路径中的目录。
该示例将 Deny、Allow 和 AllowOverride 指令应用于 /var/www/html/test 目录层次结构中的所有文件和目录。
缩进只是为了便于阅读。
<Directory /var/www/html/test> Deny from all Allow from 192.168.2. AllowOverride All </Directory>
此容器中的 AllowOverride 指令指定 .htaccess 文件中允许的指令类。
.htaccess 文件是其他配置文件,通常包含用户身份验证指令。
AllowOverride 的 ALL 参数意味着 .htaccess 文件中允许使用所有类别的指令。
有几类指令可以控制授权、控制客户端访问、控制目录索引等。
<IfModule [!]module-name>
如果加载了模块名称,则此容器应用指令。
使用可选的感叹号,Apache 反之;也就是说,如果模块名称未加载,它会在容器中设置指令。
一个例子如下:
<IfModule mod_userdir.c> UserDir disabled </IfModule>
<Limit method [method] ...>
此容器将访问控制指令限制为指定的方法。
HTTP 方法指定要对统一资源标识符 (URI) 执行的操作。
方法的示例是 GET(默认)、PUT、POST 和 OPTIONS。
以下示例禁用来自不在 example.com 域中的系统的 HTTP 上传 (PUT):
<Limit PUT> Order deny,allow Deny from all Allow from .example.com </Limit>