На серверах хостинга предустановлена библиотека модуля 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));
Все категории вопросов