Apache Directory
指令是否应该与DocumentRoot相关? 我在虚拟主机的背景下问,但它不应该有任何区别。
换句话说,它应该是:
<VirtualHost> DocumentRoot /var/www <Directory /var/www> ...
要么
<VirtualHost> DocumentRoot /var/www <Directory /> ...
两者都有效。 Apache Directory文档说:
目录path是目录的完整path或通配符string…
但是他们却显示了两个与“全path”声明相矛盾的例子。
ED:在FollowSymLinks和SymLinksIfOwnerMatch和AllowOverride部分的Apache Performance Tuning页面上也有相互矛盾的例子。
为了好玩,我查看了Debian的默认虚拟主机设置,发现这个:
<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> ...
该文档是正确的,并且<Directory>
指令应该是完整的path。
你的第一个例子是你应该如何configurationVirtualHosts指令,并将指令中的选项应用于DocumentRoot
。 你的第二个例子是指文件系统根(字面意思是/
)。
你还没有发布指令的其余部分,但这通常被用作试图监禁Apache并限制其访问的一种方式,并且通常(但不总是)放置在主apache2.conf
或httpd.conf
configuration文件,你的VirtualHosts明确允许访问他们自己的DocumentRoot
目录,所以两者经常一起使用。
从Apache文档 :
请注意,<Directory />的默认访问权限是允许所有访问。 这意味着Apache httpd将提供从URL映射的任何文件。 build议您使用以下块更改此值:
<Directory /> 要求全部否认 </目录>然后覆盖这个你想要访问的目录。 请参阅安全提示页面了解更多详情。