Apache Directory指令是否应该与DocumentRoot相关?

Apache Directory指令是否应该与DocumentRoot相关? 我在虚拟主机的背景下问,但它不应该有任何区别。

换句话说,它应该是:

 <VirtualHost> DocumentRoot /var/www <Directory /var/www> ... 

要么

 <VirtualHost> DocumentRoot /var/www <Directory /> ... 

两者都有效。 Apache Directory文档说:

目录path是目录的完整path或通配符string…

但是他们却显示了两个与“全path”声明相矛盾的例子。

ED:FollowSymLinks和SymLinksIfOwnerMatchAllowOverride部分的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.confhttpd.confconfiguration文件,你的VirtualHosts明确允许访问他们自己的DocumentRoot目录,所以两者经常一起使用。

从Apache文档 :

请注意,<Directory />的默认访问权限是允许所有访问。 这意味着Apache httpd将提供从URL映射的任何文件。 build议您使用以下块更改此值:


     <Directory />
      要求全部否认
     </目录>

然后覆盖这个你想要访问的目录。 请参阅安全提示页面了解更多详情。