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

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

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.confhttpd.conf配置文件中,而您的 VirtualHosts 明确允许访问他们自己的DocumentRoot目录,因此两者经常一起使用。

来自Apache 文档

请注意,<Directory /> 的默认访问权限是允许所有访问。这意味着 Apache httpd 将提供从 URL 映射的任何文件。建议您使用以下块来更改此设置:
    <目录 />
      要求全部拒绝
    </目录>
然后覆盖您想要访问的目录。请参阅安全提示页面以了解更多详情。

相关内容