Apache之
<Directory>
指令
<Directory>
和</Directory>
用于封装一组指令,使之仅对某个目录及其子目录生效。任何在目录上下文中可以使用的指令都允许在这种情况下使用。Directory-path可以为一个目录的完整路径,抑或是包含了Unix外壳匹配语法的通配符字串。在通配符字串中,“?”匹配任何单个的字符,“*”匹配任何字符序列。您也可以使用“[]”来确定字符范围。以上通配符都不能匹配“/”字符。所以<Directory public_html>
能够正确匹配。比如说:
<Directory /usr/local/httpd/htdocs>
</Directory>
在使用directory-path参数的时候要注意:它们必须与Apache用于访问文件的文件系统路径保持一致。赋予特定<Directory>的指令将无法对通过不同路径指向的同一个目录文件生效,比如说通过另外一个符号连接生成的路径。
扩展的正则表达式也可以通过附加一个~
字符来使用。比如说:
<Directory ~ "^/www/.*/[0-9]{3}">
将匹配/www/下的所有由3个数字组成的目录。
如果有多个(非正则表达式)directory配置段符合包含某文档的目录(或其父目录),那么指令将以最短目录最先应用的规则进行应用。并杂以.htaccess文件中的指令。比如说在
<Directory />
</Directory>
<Directory /home/>
</Directory>
中,访问文档/home/web/dir/doc.html
的步骤如下:
- 应用指令
AllowOverride None
(禁用.htaccess
文件)。 - 应用指令
AllowOverride FileInfo
(针对目录/home/web
)。 - 应用所有
/home/web/.htaccess
中的FileInfo指令
正则表达式将在所有普通配置段应用后才予以考虑。所有的正则表达式将根据它们出现在配置文件中的顺序进行验证。比如说,以下配置:
<Directory ~ abc$>
... directives here ...
</Directory>
正则表达式配置段将在所有普通的<Directory>和.htaccess
文件应用后才予以考虑。所以正则表达式将匹配/home/abc/public_html/abc
并予以应用。
请注意:Apache对<Directory />的默认访问权限为Allow from All
。这意味着Apache将伺服任何通过URL映射的文件。我们建议您将这个配置做如下屏蔽:
<Directory />
</Directory>
一般来说,directory小节会出现在access.conf文件中,但它们也可能出现在任何配置文件中。<Directory>
指令不可被嵌套使用,也不能出现在<Limit>
或<LimitExcept>
小节中。
发表评论