2.7.1.1.9. Определение страны посетителя
Примечания:
- Для получения кода страны в PHP см. Определение страны посетителя в PHP.
- Для ограничения доступа средствами хостинга см. Ограничение доступа по странам.
Специальный модуль nginx в каждый запрос на сайт добавляет заголовок GeoIp-Country-Code с двухбуквенным кодом страны посетителя (ISO 3166). Страна определяется на основе IP-адреса посетителя по данным MaxMind GeoLite.
Ниже представлены варианты решения некоторых типичных задач (во всех примерах указанные строки нужно добавить в начало файла .htaccess в корневом каталоге сайта):
Запретить доступ к сайту для всех посетителей из Китая:
RewriteEngine On
RewriteCond %{HTTP:GeoIp-Country-Code} ^(CN)$
RewriteRule .* - [F]
Запретить доступ к сайту для всех посетителей из Украины, кроме определённого IP-адреса или подсети:
RewriteEngine On
RewriteCond %{HTTP:GeoIp-Country-Code} ^(UA)$
RewriteCond expr "! -R '123.123.123.0/24'"
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]
Комментарии