Apache 2.4 ErrorDocument 403 与 Require ip 不兼容

Apache 2.4 ErrorDocument 403 与 Require ip 不兼容

我想将我在虚拟主机文件中设置的站点的一个 IP 列入白名单。在本<VirtualHost>节中,我设置了以下 2 条基本规则:

ErrorDocument 403 /var/www/html/403.html
<Location />
    Require ip xxx.xxx.xxx.xxx
</Location>

当我访问允许 IP 之外的网站时,我得到的是通用的 Apache“禁止”页面,而不是我尝试使用的自定义页面。我甚至收到了额外的消息“此外,在尝试使用 ErrorDocument 处理请求时遇到了 403 禁止错误。”这有点道理,因为我不允许访问任何禁止 IP 的 URL,但显然我想做一个例外来查看我的自定义 403 页面。

值得一提的是,在 VirtualHost 中,DocumentRoot 已在 /var/www/vhosts/blahblah 中设置,因此我认为 /var/www/html/403.html 不会受到限制。我曾在此网站和其他网站上看到过此类问题的某种形式,但似乎没有人有真正可行的解决方案,尤其是针对 2.4 的版本 - 有 Apache 工程师在场吗?=]

答案1

通过在Location /拒绝访问的指令前面加上

  <Location/403.html  >
         Require all granted
   </Location>

或者确保错误文档在 Location / 之外,通过使用不同的(子)域来呈现错误

即使用类似:

 ErrorDocument 403 https://errors.example.com/403.html

相关内容