2009-02-15 2 views
3

Я хочу защитить некоторые поддомены от общественности. Ограничение должно быть сделано против белого списка IP. Бесконечная петля из-за перенаправления не является проблемой как ее не www-домен.Переадресовать все IP-адреса, кроме этих белых.

Я пробовал это 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

Вы должны объединить RewriteCond директивы с AND вместо OR, как вы хотите переадресовать, если оба условия (для этого 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] 
+1

Если вы хотите быть четко о перенаправлении, как я, (либо постоянный 301 или временный 302), а затем изменить, чтобы флаг на что-то вроде '[R = 302 ] ' – Jonathan

4

Такого рода вещи на самом деле именно то, что Allow и Deny директивы Апача предназначены для. Внутри <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 
Смежные вопросы