Apache2 + GeoIP на Debian
Установка:
apt-get update apt-get install libapache2-mod-geoip
Включить модуль:
a2enmod geoip
Код для .htaccess:
<IfModule mod_geoip.c> RewriteEngine on GeoIPEnable On SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry SetEnvIf GEOIP_COUNTRY_CODE BY GoodCountry SetEnvIf GEOIP_COUNTRY_CODE KZ GoodCountry SetEnvIf GEOIP_COUNTRY_CODE UA GoodCountry SetEnvIf REMOTE_ADDR 192.168. GoodCountry Order Allow,Deny Allow from env=GoodCountry </IfModule>
пример разрешения всех IP адресов страны по коду:
SetEnvIf GEOIP_COUNTRY_CODE RU GoodCountry
Но для адресов локальных сетей не создаются переменные GEOIP_CONTINENT_CODE, GEOIP_COUNTRY_CODE, GEOIP_COUNTRY_NAME, поэтому если нужно - зададим правило через REMOTE_ADDR:
SetEnvIf REMOTE_ADDR 192.168. GoodCountry
Далее разрешаем доступ через проверку переменной GoodCountry
Allow from env=GoodCountry
Также можно получить доступ к переменным окружения сервера из PHP
$_SERVER['GEOIP_CONTINENT_CODE'] $_SERVER['GEOIP_COUNTRY_CODE'] $_SERVER['GEOIP_COUNTRY_NAME'] $_SERVER['GoodCountry']