Используя 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
Артур, отличная статья. Очень помогла. Спасибо. Скажите, а можно сделать редирект сразу на все страницы?