Как ограничить доступ по IP для конкретной страницы сайта?

Zdorova
На сайте с 09.01.2010
Offline
133
1574

Приветствую! Задача следующая: разрешить доступ на одну-конкретную страницу сайта только юзерам с, к примеру, японскими IP. А на весь сайт остальной - с любыми IP.

Список диапазонов японских IP нашел.

Как все это дело оформить в .htaccess?

minor
На сайте с 04.10.2010
Offline
70
#1

Если в .htaccess для всего сайта можно сделать


order allow deny
deny from all
deny from ip адрес

или

RewriteCond %{REMOTE_ADDR} 198.162.1.1
RewriteRule ^/$ /404.html [L]

Для одной стр может быть сделать проверку в ней только в php.

PHP experience 2 year, comprehend seo
Zdorova
На сайте с 09.01.2010
Offline
133
#2

Первый вариант явно неправильный, неполный. Во втором, правда я не спец, тоже не увидел того что мне нужно.

Пока удалось лишь разрешить заходить на сайт только японским IP. Осталось запрет распространить только на одну страницу, а не на весь сайт.

minor
На сайте с 04.10.2010
Offline
70
#3

Смотри мануал апача

получится что то вроде этого

<Directory /docroot>

Order Allow,Deny
Allow from all
Deny from 128.667.89.0/100
</Directory>

если 2 диапазона то через пробел

temmokan
На сайте с 18.08.2008
Offline
131
#4

Возможно, удобнее использовать Location:

<Location ~ "/urlregexp"> 

Order Allow,Deny
Allow from all
Deny from <ipranges list>
</Location>

где urlregexp определяет адреса, для которых действует запрет.

Может оказаться, что имеет смысл установить некую переменную (SetEnvIf), если IP в списке запрещённых, тогда использовать конструкцию вида

<Location ~ "/urlregexp"> 

Order Allow,Deny
Allow from all
Deny from env=ip_is_banned
</Location>

Кстати, откуда берётся соотнесение IP и страны? GeoIP или аналог?

Zdorova
На сайте с 09.01.2010
Offline
133
#5

Спасибо, попробую!

Нашел пару сервисов. Но они не все полные. Хотя я вроде нашел наиболее полный список диапазонов. Если надо, пишите в личку, поищу.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий