【问题标题】:Directory require all denied not working目录要求全部拒绝不工作
【发布时间】:2016-10-07 01:00:17
【问题描述】:

我创建了一个虚拟主机并尝试通过使用带有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>

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

【问题讨论】:

    标签: linux apache2 apache2.4


    【解决方案1】:

    如果这些指令位于与当前请求不匹配的 VirtualHost 中,它们将不会做任何事情。

    您的 VirtualHost 没有 ServerName 或 ServerAlias,这是让 VirtualHost 用于请求的主要方式。

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

    apachectl -S will quickly summarize your virtual hosts.
    

    【讨论】:

    • 你能告诉我上面的配置有什么问题,而不是给出答案的提示吗?
    • 缺少 ServerName 指令
    【解决方案2】:

    Require 不得与已弃用的 OrderAllowDeny 指令组合(自 Apache 2.4 起)。 查看所有配置文件并将 Order/Allow/Deny 替换为 Require,可能结合使用 RequireAllRequireAnyRequireNone

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

    • /etc/apache2/sites-enabled 中的所有文件
    • /etc/apache2/conf-enabled 中的所有文件
    • 根据AllowOverride 设置,您可能需要查看所有.htaccess 文件以查找可从网络访问的任何目录

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 2011-09-17
      • 2014-12-10
      • 1970-01-01
      • 2011-09-12
      • 2014-09-04
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多