Apache2:如何限制对 DocumentRoot 中的文件的访问

Apache2:如何限制对 DocumentRoot 中的文件的访问

我已经编写了此配置来限制访问/var/www/news.html

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/

    <Directory /var/www/>
        Order deny,allow
        Allow from all
        Options FollowSymLinks
    </Directory>

    <Files /var/www/news.hmtl>
        Order allow,deny
        Deny from all
    </Files>
</VirtualHost>

但它example.com/news.html仍然打开。我通过明确限制对 URL 的访问解决了这个问题example.com/news.html

<Location /news.html>
    Order allow,deny
    Deny from all
</Location>

在将 URL 解析为相对于 DocumentRoot 的路径时,似乎所有<Directory>规则<Files>都被某些隐式规则覆盖<Location>。这是真的吗?我应该将 DocumentRoot 视为一个提议公开可见的地方吗?

答案1

Files 指令不采用路径 - 像这样更改文件块。

<Files news.hmtl>
    Order allow,deny
    Deny from all
</Files>

上述方法可以工作,但可能无法完全满足您的要求,因为整个 vhost 文件系统中名为 news.html 的所有文件都将被阻止。您可以通过将 Files 指令包装在 Directory 指令中来限制其范围

<Directory /var/www/test>
    Order deny,allow
    Allow from all
    Options FollowSymLinks
    <Files news.hmtl>
        Order allow,deny
        Deny from all
    </Files>
</Directory>

/var/www/test现在目录中名为 news.html 的文件及其所有子目录将会被阻止。

看看文件系统和网络空间Apache 文档的部分以获取有关这些指令如何交互的更多信息。

相关内容