Используя GeoIP можно выполнить перенаправление или блокировку определенных IP по странам.

Для того чтобы настроить работу GeoIP на сайте используя .htaccess, необходимо проверить включен ли модуль GeoIP на сервере. Для этого необходимо создать php файл с любым названием, например: info.php, открыть его для редактирования и вставить такой код:

 <?php phpinfo(); ?>

После этого перейти на эту страницу, например: https://unihost.com/info.php и нажать Ctrl+F для поиска на странице. В поисковую строку необходимо ввести “geo” без кавычек. В случае если на странице буду присутствовать директивы вида:

_SERVER["HTTP_GEOIP_COUNTRY_NAME"]
_SERVER["HTTP_GEOIP_COUNTRY_CODE"]
_SERVER["HTTP_GEOIP_CONTINENT_CODE"]
_SERVER["HTTP_GEOIP_ADDR"]

Это значит что модуль GeoIP включен на сервере, на котором расположен сайт. В таком случае можно продолжать настройку GeoIP.
Рассмотрим варианты применения GeoIP в примерах.

Перенаправление по странам

Иногда бывает нужно перенаправить пользователя с иностранным IP на английскую версию сайта, и наоборот. В таком случае в .htaccess необходимо вставить код вида:

RewriteEngine On
GeoIPEnable On
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} (RU|UA) [NC]
RewriteRule .* http://unihost.com/ru/ [R=302,L]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule .* http://unihost.com/en/ [R=302,L]

Где:

RewriteEngine On – включение модуля Rewrite 
GeoIPEnable On – включение модуля GeoIP 
RewriteCond %{REQUEST_URI} ^/$ [NC] – если зарос приходит на корень сайта “/” без явно указанной страницы
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} (RU|UA) [NC] – и странна Россия или Украина
RewriteRule .* http://unihost.com/ru/ [R=302,L] – выполняем редирект на русскую версию сайта
RewriteCond %{REQUEST_URI} ^/$ [NC] – если зарос приходит на корень сайта “/” без явно указанной страницы
RewriteRule .* http://unihost.com/en/ [R=302,L] – методом исключения выполняем редирект на англоязычную версию сайта

 

Блокировка по странам

В случае как с перенаправлением, так же и с блокировкой. Есть возможность заблокировать того или иного посетителя в зависимости от страны. Для этого в .htaccess необходимо добавить следующий код:

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry
Deny from env=BlockCountry

Где:

GeoIPEnable On – включение модуля GeoIP
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry – создание некоего массива (цепочки) BlockCountry в которую вноситься условие что страна CN – Китай
SetEnvIf GEOIP_COUNTRY_CODE FR BlockCountry – тоже самое что и предыдущая строка, только страна в этом случае Франция
Deny from env=BlockCountry – блокирование стран которые находятся в цепочке BlockCountry