自制网站的自定义禁令页面

时间:2010-07-26 21:04:11

标签: apache http .htaccess

我了解如何使用.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时会产生内部服务器错误,而不是将用户发送到/禁止

3 个答案:

答案 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更改为您想要的路径/ /文件名。