我想将我在虚拟主机文件中设置的站点的一个 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