Задать вопрос
Tomasina
@Tomasina
Инженер-разработчик

Как в .htaccess перенаправить всех, кроме нескольких IP?

В интернете полно обратного — перенаправить всех, перенаправить по известным IP и др.
А мне нужно следующее:
-если IP (или подсеть, непринципиально) X или Y, то отдать index.php
-всем остальным отдать index.html или перенаправить на каталог /sorry/ (смотря что проще реализовать).
  • Вопрос задан
  • 14830 просмотров
Подписаться 11 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 7
IvanIlyasov
@IvanIlyasov
Познаю мир
Че, за два года так и не дали верный ответ???

Вот:
RewriteCond %{REMOTE_ADDR} !93.143.174.0 
RewriteRule ^index.php$ index.html [L,QSA]

В данном случае изначально адрес главной должен быть index.php. А если IP не соответствует, то перенаправляет на index.html

Если нужно указать несколько IP-адресов, используйте регулярное выражение вида: !^(93\.143\.174\.0|127\.111\.11\.111)
Ответ написан
Комментировать
Tomasina
@Tomasina Автор вопроса
Инженер-разработчик
попытка была, но не сработала:
RewriteCond %{REMOTE_ADDR} !^93.143.174.* RewriteRule ^(.*)$ index.html [R,L]
Ответ написан
Комментировать
vsespb
@vsespb
!^93.143.174.* — это же должен быть регэксп. попробуйте !^93\.143\.174\.
Ответ написан
grafomanych
@grafomanych
RewriteCond %{REMOTE_ADDR} !^(127).0.0.[0-9]+
RewriteRule ^(.*)$ index.html [L]
Ответ написан
Wott
@Wott
# это регэксп, так что подсеть можно только /24 /16 или перечислением RewriteCond %{REMOTE_ADDR} ^192\.168\.(1|2|3|4)\. RewriteRule . /index.php [S=1] # тут делаем то что нужно для всех остальных RewriteRule . /index.html
C помощью Skip флага можно сооружать любые условные конструкции, при этом в самом правиле делем условие на входящий урл, а если надо что-то вне урла, типа адреса — добавляем условия выше
Ответ написан
Комментировать
Wott
@Wott
сорри тег перепутал
# это регэксп, так что подсеть можно только /24 /16 или перечислением 
RewriteCond %{REMOTE_ADDR} ^192\.168\.(1|2|3|4)\. 
RewriteRule . /index.php [S=1] 
# тут делаем то что нужно для всех остальных 
RewriteRule . /index.html
Ответ написан
Комментировать
Tomasina
@Tomasina Автор вопроса
Инженер-разработчик
ошибка 500 вылетает
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы