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

Kim*_*Kim 5 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]
Run Code Online (Sandbox Code Playgroud)

..但没有工作.

我究竟做错了什么 ?

Dav*_*d Z 6

这种事实上正是Apache AllowDeny指令的目的.在<VirtualHost>您要限制访问的域的块内,放置:

<Location />
    Order allow,deny
    Allow from all
    Deny from 123.45.67.89
    Deny from 213.45.67.89
</Location>
Run Code Online (Sandbox Code Playgroud)

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

ErrorDocument 403 http://www.example.com
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 3

您必须使用RewriteCondAND 而不是 OR 来组合指令,因为如果两个条件都为 true,则您想要重定向(因此 IP 地址既不是X也不是Y)。所以试试这个:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteCond %{REMOTE_ADDR} !^213\.45\.67\.89$
RewriteRule ^ http://www.example.com/ [R]
Run Code Online (Sandbox Code Playgroud)