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]
Коментарі