自定义 403 禁止使用重写条件

Posted

技术标签:

【中文标题】自定义 403 禁止使用重写条件【英文标题】:custom 403 forbidden using rewrite condition 【发布时间】:2017-03-16 05:52:30 【问题描述】:

如果我通过重写条件禁止 IP,如何将它们发送到自定义 403 页面?

#RewriteRule ^403/?$ 403error.html [NC]
#RewriteCond %REMOTE_ADDR ^00\.00\.00\.00$
#RewriteRule ^ - [R=403,L]

在 ip 被拒绝时以无限循环发送它,但是我不希望使用默认的 403 禁止页面。我有一个想要显示的自定义页面。我将其命名为 403error.html 并将其放置在*** html 目录中。我怎样才能拒绝除自定义错误页面之外的所有内容?

【问题讨论】:

【参考方案1】:

是的,该规则导致无限循环错误,因为当被禁止的 ip 尝试访问该站点时,它们首先被重定向到 403 页面,然后 403 页面重定向回自身,从而导致无休止的内部重定向。为了解决这个问题,我们需要从规则中排除 403 页面或重写目标:

RewriteEngine on
RewriteCond %REMOTE_ADDR ^00\.00\.00\.00$
RewriteRule !403error\.html$ /403error.html [L]

这会将您的自定义错误页面显示到被禁止的 ip。

【讨论】:

为了胜利!!再次,你是一个很大的帮助,非常感谢!【参考方案2】:

我通过将代码直接写入 ErrorDocument 调用并在姊妹域上引用/托管所需的图像,暂时“修补”了我的问题。但是,我仍然想知道是否可以在原始域中托管图像或 html 文档。

ErrorDocument 403 "<body bgcolor=#9C1409><br><br><center><a href=mailto:someone@somewhere.com><img src=http://www.somewhereelse.com/403error.jpg border=0></a></center>"

【讨论】:

以上是关于自定义 403 禁止使用重写条件的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 中仅使用自定义 UserDetailsS​​ervice 禁止 403 [重复]

将 WAMP 用于自定义网站时出现错误代码 403

使用 API 网关的自定义域的 route53 返回禁止

Spring boot:如何自定义禁止的错误 json

Django - 使用 ExtJS 发布 ajax 请求禁止 403

Weblogic 错误 403--禁止