Блокировка пользователей из определенных стран

baseroad

Местный житель
#1
Каждый запрос на сайт содержит специальный заголовок GeoIp-Country-Code, в котором содержится двухбуквенный код страны посетителя ISO 3166. Страна определяется исходя из IP адреса посетителя по данным MaxMind GeoLite.

Приведем варианты решения некоторых типичных задач (во всех примерах указанные строки нужно добавить в начало файла .htaccess в корневой папке сайта):

Запретить доступ к сайту для посетителей из Китая:
Код:
RewriteEngine On 
RewriteCond %{HTTP:GeoIp-Country-Code} ^(CN)$ 
RewriteRule .* - [F]
Сделать редирект с главной страницы в подраздел /ua/ для посетителей из Украины:
Код:
RewriteEngine On  
RewriteCond %{HTTP:GeoIp-Country-Code} ^(UA)$  
RewriteCond %{REQUEST_URI} ^/$  
RewriteRule .* /ua/ [L,R=302]
Заблокировать POST запросы (комментарии/авторизация на сайте/постинг на форуме) со всех стран, кроме Украины и Польши:
Код:
RewriteEngine On  
RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$  
RewriteCond %{REQUEST_METHOD} POST  
RewriteRule .* - [F]
Заблокировать GET запросы (комментарии/авторизация на сайте/постинг на форуме) со всех стран, кроме Украины и Польши:
Код:
RewriteEngine On  
RewriteCond %{HTTP:GeoIp-Country-Code} !^(UA|PL)$  
RewriteCond %{REQUEST_METHOD} GET  
RewriteRule .* - [F]