Jef*_*eff 16 directory apache-2.2
ApacheDirectory
指令是否应该与 DocumentRoot 相关?我在 VirtualHost 的上下文中询问,但它应该没有任何区别。
换句话说,它应该是:
<VirtualHost>
DocumentRoot /var/www
<Directory /var/www>
...
Run Code Online (Sandbox Code Playgroud)
或者
<VirtualHost>
DocumentRoot /var/www
<Directory />
...
Run Code Online (Sandbox Code Playgroud)
两者都有效。在Apache的目录文档说:
Directory-path 要么是目录的完整路径,要么是通配符字符串...
...但随后他们展示了两个与“完整路径”声明相矛盾的例子。
ED:Apache Performance Tuning 页面上的FollowSymLinks 和 SymLinksIfOwnerMatch以及AllowOverride部分也有相互矛盾的例子。
为了好玩,我查看了 Debian 的默认 vhost 设置,发现了这个:
<VirtualHost *:80>
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
...
Run Code Online (Sandbox Code Playgroud)
Cra*_*son 10
文档是正确的,<Directory>
指令应该是完整路径。
您的第一个示例是您应该如何为 VirtualHosts 配置指令,并将指令中的选项应用于DocumentRoot
. 你的第二个例子是指文件系统根(字面意思/
)。
您还没有发布指令的其余部分,但这通常用作尝试监禁 Apache 并限制其访问的一种方式,并且通常(但不总是)放置在主文件apache2.conf
或httpd.conf
配置文件中,您的 VirtualHosts 明确允许访问各自的DocumentRoot
目录,因此两者经常一起使用。
请注意,<Directory /> 的默认访问权限是允许所有访问权限。这意味着 Apache httpd 将提供从 URL 映射的任何文件。建议您使用以下块更改此设置:<目录 /> 要求全部拒绝 </目录>然后为您想要访问的目录覆盖它。有关更多详细信息,请参阅安全提示页面。