ApacheDirectory
指令是否应该与 DocumentRoot 相关?我在 VirtualHost 的上下文中问,但它不应该有任何区别。
换句话说,它应该是:
<VirtualHost>
DocumentRoot /var/www
<Directory /var/www>
...
或者
<VirtualHost>
DocumentRoot /var/www
<Directory />
...
两者都有效。Apache Directory文档说:
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>
...
文档是正确的,
<Directory>
指令应该是完整路径。您的第一个示例是如何为 VirtualHosts 配置指令,并将指令中的选项仅应用于
DocumentRoot
. 您的第二个示例是指文件系统根目录(字面意思是/
)。您还没有发布指令的其余部分,但这通常被用作试图监禁 Apache 并限制其访问的一种方式,并且通常(但不总是)放置在主文件
apache2.conf
或httpd.conf
配置文件中,您的 VirtualHosts 明确允许访问自己的DocumentRoot
目录,所以两者经常一起使用。从Apache 文档: