重定向除白名单以外的所有IP

时间:2009-02-15 22:01:36

标签: apache .htaccess

我想保护一些子域名不受公众侵害。应该针对IP白名单进行限制。 由于重定向导致的无限循环不是问题,因为它不是www域。

我试过这个http://discussions.apple.com/message.jspa?messageID=2411725,但无法让它发挥作用。

但是我确实尝试了第一次

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$ [OR]
RewriteCond %{REMOTE_ADDR} !^213\.45\.67\.89$
RewriteRule ^/.* http://www.mydomain.com [R]

..但没有工作。

我做错了什么?

2 个答案:

答案 0 :(得分:5)

这类事实上正是Apache的AllowDeny指令所针对的。在您要限制访问的域的<VirtualHost>块内,请输入:

<Location />
    Order allow,deny
    Allow from all
    Deny from 123.45.67.89
    Deny from 213.45.67.89
</Location>

但是,这会产生403(禁止)错误,默认情况下不会重定向到您的www域。我想你可以通过添加指令

来实现
ErrorDocument 403 http://www.example.com

答案 1 :(得分:3)

如果两个条件都为真,则必须将RewriteCond指令与AND组合而不是OR,因为IP地址既不是 X 也不是 Y < / em>的)。所以试试这个:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !^213\.45\.67\.89$
RewriteRule ^ http://www.example.com/ [R]