我了解如何使用.htaccess:
从我的apache网络服务器禁用IP地址order allow,deny
deny from 192.168.44.201
deny from 224.39.163.12
deny from 172.16.7.92
allow from all
我想创建一个自定义“你被禁止”页面。我怎么能这样做?
修改
为了澄清,我不尝试创建自定义403页面,因为这些页面也用于其他实例(即基本身份验证失败等)。我到目前为止最接近的是:
rewritecond %{REMOTE_ADDR} ^127\.0\.0\.1$
RewriteRule !^banned$ /banned [NC,L]
但是当匹配IP时会产生内部服务器错误,而不是将用户发送到/禁止
答案 0 :(得分:3)
其他答案表明403代码的ErrorDocument
将是通常的方法。但是,如果您希望显示不同的错误页面,如果用户被拒绝基于IP访问(而不是其他原因),您可以使用mod_rewrite,如您所怀疑的那样。
RewriteCond %{REMOTE_ADDR} =192.168.44.201 [OR]
RewriteCond %{REMOTE_ADDR} =224.39.163.12 [OR]
RewriteCond %{REMOTE_ADDR} =172.16.7.92
RewriteRule !^/banned.html /banned.html [L]
P.S。如果可能的话,这应该在您的虚拟主机配置中,而不是.htaccess
文件中。如果您无权访问虚拟主机配置文件,则可以将其放在.htaccess
文件中,但从RewriteRule
模式中删除前导斜杠(因此!^/banned.html
变为{{ 1}})。
答案 1 :(得分:2)
您使用ErrorDocument
指令。被拒绝访问的人将被发送403头,所以:
ErrorDocument 403 banned.html
会将被禁止的人重定向到banned.html
编辑:另一种方法是完全删除mod_access内容,并使用基于IP的重写规则(如问题中所述)。它应该是:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} 192.168.44.201 [OR]
RewriteCond %{REMOTE_ADDR} 224.39.163.12 [OR]
RewriteCond %{REMOTE_ADDR} 172.16.7.92
RewrulteRule .* banned.html [L]
编辑2:大卫打败了我一个几乎相同的答案;我认为his way就是你想要的
答案 2 :(得分:1)
在.htaccess文件中:
ErrorDocument 403 /banned.html
将/banned.html更改为您想要的路径/ /文件名。