目录要求所有拒绝不工作

时间:2016-06-07 08:19:07

标签: linux apache2 apache2.4

我创建了一个虚拟主机,并尝试使用带有Require all denied的目录指令禁止访问它。

<VirtualHost *:80>
    DocumentRoot /var/www/test

    <Directory /var/www/test/>
        Require all denied
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

但是,用户仍然可以访问每个页面。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果这些指令在虚拟主机中与当前请求不匹配,则不会执行任何操作。

您的VirtualHost没有ServerName,也没有ServerAlias,这是将VirtualHost用于请求的主要方法。

如果您认为忽略了配置,则步骤是验证此VirtualHost是否正在使用中。一种简单的方法是为虚拟主机定义唯一的日志文件。你的看起来并不独特。

apachectl -S will quickly summarize your virtual hosts.

答案 1 :(得分:0)

Require不得与弃用的OrderAllowDeny指令结合使用(自Apache 2.4起)。 查看所有配置文件,并将订单/允许/拒绝替换为Require,可能使用RequireAllRequireAnyRequireNone合并。

请注意,配置不一定位于保存<VirtualHost>的单个文件中。您需要查看所有服务器配置文件。 例如。在Ubuntu上,这包括:

  • /etc/apache2/sites-enabled
  • 中的所有文件
  • /etc/apache2/conf-enabled
  • 中的所有文件
  • 取决于AllowOverride设置,您可能需要查看从网络上可以访问的所有.htaccess个文件