ApacheDirectory
指令是否应该与 DocumentRoot 相关?我在 VirtualHost 上下文中询问,但它不应该有任何区别。
换句话说,它应该是:
<VirtualHost>
DocumentRoot /var/www
<Directory /var/www>
...
或者
<VirtualHost>
DocumentRoot /var/www
<Directory />
...
两种方法都有效。阿帕奇目录文档说:
目录路径可以是目录的完整路径,也可以是通配符字符串......
...但是他们给出了两个与“完整路径”陈述相矛盾的例子。
预计起飞时间:也有相反的例子Apache 性能调优页面在里面FollowSymLinks 和 SymLinksIfOwnerMatch和允许覆盖部分。
为了好玩,我查看了 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>
...
答案1
文档是正确的,并且<Directory>
指令应该是满的小路。
第一个例子是您应该如何配置 VirtualHosts 的指令,并将指令中的选项应用于DocumentRoot
。第二个例子指的是文件系统根目录(字面意思是/
)。
您还没有发布该指令的其余部分,但这通常用作尝试监禁 Apache 并限制其访问的一种方式,并且通常(但并非总是)放置在主文件apache2.conf
或httpd.conf
配置文件中,而您的 VirtualHosts 明确允许访问他们自己的DocumentRoot
目录,因此两者经常一起使用。
来自Apache 文档:
请注意,<Directory /> 的默认访问权限是允许所有访问。这意味着 Apache httpd 将提供从 URL 映射的任何文件。建议您使用以下块来更改此设置:<目录 /> 要求全部拒绝 </目录>然后覆盖您想要访问的目录。请参阅安全提示页面以了解更多详情。