На серверах хостингу встановлена бібліотека модуля GeoIP для apache, nginx і PHP (для всіх версій, які її підтримують).
Бібліотека GeoIP - дозволяє отримати регіон до якого належить IP адреса з якого відправляється запит.
Наші сервера обробляють 4 заголовки:
GEOIP_ADDR - IP адреса, з якого відправляється запит;
GEOIP_CONTINENT_CODE - код континенту (Європа, Азія, Америка і т.д.);
GEOIP_COUNTRY_CODE - код країни, якій належить IP адреса;
GEOIP_COUNTRY_NAME - назва країни, якій належить IP адреса;
Найменування країн і список соотвествующих кодів, доступний тут : ссылка на джерело
Доступ до даних змінним, які передаються сервером, Ви можете отримати, використовуючи .htaccess, або вбудовану бібліотеку PHP
Для доступу до значень Ви можете використовувати два типи оточення (HTTP і ENV):
HTTP:GEOIP_COUNTRY_CODE або ENV:GEOIP_COUNTRY_CODE - .htaccess;
$_SERVER['HTTP_GEOIP_ADDR'] або $_SERVER['HTTP_GEOIP_COUNTRY_CODE'] - отримання даних з масиву області змінної $_SERVER для PHP;
— заблокувати доступ усім, крім IP адрес з України використовуючи .htaccess:
RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule .* - [F]
или
SetEnvIf GEOIP_COUNTRY_CODE UA allowed_country
Allow from env=allowed_country
Deny from all
— заблокувати доступ усім, крім IP адрес з України та Німеччини використовуючи .htaccess :
RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA|DE)$
RewriteRule .* - [F]
или
SetEnvIf GEOIP_COUNTRY_CODE UA allowed_country
SetEnvIf GEOIP_COUNTRY_CODE DE allowed_country
Allow from env=allowed_country
Deny from all
— заблокувати доступ усім користувачам Німеччині використовуючи .htaccess :
RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} ^(DE)$
RewriteRule .* - [F]
или
SetEnvIf GEOIP_COUNTRY_CODE DE denied_country
Deny from env=denied_country
— переадресація з основного домену на багатомовний піддомен для всих користувачів не з України, в залежності від регіону (наприклад, якщо відвідувач з Німеччини - переадресувати на піддомен DE.DOMAIN_NAME.ZONE, якщо з України - не виконувати переадресацій) використовуючи .htaccess:
RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule ^(.*) https://%{HTTP:GEOIP_COUNTRY_CODE}\.%{HTTP_HOST}/$1 [L,R=301]
— приклад релізації PHP використовуючи область глобальної змінної $_SERVER :
var_dump($_SERVER['HTTP_GEOIP_ADDR']);
var_dump($_SERVER['HTTP_GEOIP_CONTINENT_CODE']);
var_dump($_SERVER['HTTP_GEOIP_COUNTRY_CODE']);
var_dump($_SERVER['HTTP_GEOIP_COUNTRY_NAME']);
— приклад релізації PHP використовуючи функцію getenv() :
var_dump(getenv(HTTP_GEOIP_ADDR));
var_dump(getenv(HTTP_GEOIP_CONTINENT_CODE));
var_dump(getenv(HTTP_GEOIP_COUNTRY_CODE));
var_dump(getenv(HTTP_GEOIP_COUNTRY_NAME));
— приклад релізації PHP використовуючи бібліотеку PHP GeoIP :
$client_ip = $_SERVER['REMOTE_ADDR'];
var_dump(geoip_country_code_by_name($client_ip));
var_dump(geoip_continent_code_by_name($client_ip));
var_dump(geoip_country_name_by_name($client_ip));
Всі категорії питань