我如何拒绝某个 IP 地址但仍使用 Apache2 显示自定义错误页面?

我如何拒绝某个 IP 地址但仍使用 Apache2 显示自定义错误页面?

我的 Web 根目录中/home/www/有一个.htaccess用于禁止 IP 地址的文件:

order allow,deny
deny from 1.2.3.4
deny from 2.3.4.5
allow from all

ErrorDocument 500 /errors/500.htm
ErrorDocument 403 /errors/403.htm

我也尝试过这种方法,但出现了以下错误:

ErrorDocument 500 /home/www/errors/500.htm
ErrorDocument 403 /home/www/errors/403.htm

我创建了一个错误目录,/home/www/errors其中包含以下文件:

403.htm
500.htm
.htaccess

在错误目录中.htaccess我设置了规则:

order deny,allow
allow from all

如果我将我的 IP 放在根 .htaccess 文件中,我将无法浏览该网站。我收到一条错误:

禁止 - 您无权访问此服务器上的 /。

此外,尝试使用 ErrorDocument 处理请求时遇到 403 Forbidden 错误。

但是,如果我浏览 /errors/500.htm,我可以在浏览器中看到该页面,所以我知道子目录.htaccess似乎允许加载这些文件。

我做错了什么?如何拒绝某个 IP 地址但仍使用 Apache2 显示自定义错误页面?

答案1

将来自被阻止 IP 的用户重定向到错误页面会更容易:

RewriteCond %{REMOTE_ADDR} 1.2.3.4
RewriteRule .* /CustomError.html [R=403]

相关内容