все достаточно просто решается с помощью гугля.
пошагово, установка геоипа на сервер, нужен рутовый доступ в шелл.
cd /root (или куда угодно)
wget
http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.5.tar.gz
tar xfz GeoIP-1.4.5.tar.gz
cd GeoIP-1.4.5
./configure
make
make install
установлена база, теперь нужно установить GeoCityLite:
cd /root
wget
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d GeoLiteCity.dat.gz
mv GeoLiteCity.dat /usr/local/share/GeoIP/
теперь нужно подключить апачевский модуль к апачу:
для апача 1.3х:
wget
http://geolite.maxmind.com/download/geoip/api/mod_geoip/mod_geoip_1.3.4.tar.gz
для апача 2.х
wget
http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
далее распаковываем нужный модуль, к примеру для апача 1.3:
tar xfz mod_geoip_1.3.4.tar.gz
cd mod_geoip_1.3.4
если апач собран с поддержкой APXS (обычно так оно и есть), то:
apxs -cia -I/usr/local/include -L/usr/local/lib -lGeoIP mod_geoip.c
чтобы узнать путь до apxs, если вдруг понадобится:
whereis (или where) apxs
апикс подключит автоматом модуль к апачу,
далее нужно подредакторировать конфиг апача
ищем где конфиг апача, редактируем:
mcedit httpd.conf или
nano httpd.conf или
ee httpd.conf или для тру админов: vi httpd.conf
там ищется строчка:
GeoIPEnable On
если она вдруг не найдена, то после строки
AddModule mod_geoip.c
дописывается следующее:
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat
по дефолту ставится в /usr/local/share/GeoIP/
перед добавлением рекомендуется сделать
ls /usr/local/share/GeoIP/
и убедится в наличии
далее апач рестартится:
apachectl restart
проверяется обычным пхп скриптом:
Код: |
<?
print_r($_SERVER);
?>
|
который вызывается из браузера,
если все установлено верно, то в списке значений будут такие:
[GEOIP_ADDR] => xxx.xxx.xx.xx
[GEOIP_AREA_CODE] => 0
[GEOIP_CITY] => Moscow
[GEOIP_CONTINENT_CODE] => AS
[GEOIP_COUNTRY_CODE] => RU
[GEOIP_COUNTRY_NAME] => Russian Federation
[GEOIP_DMA_CODE] => 0
[GEOIP_LATITUDE] => 55.752201
[GEOIP_LONGITUDE] => 37.615601
[GEOIP_METRO_CODE] => 0
[GEOIP_POSTAL_CODE] =>
[GEOIP_REGION] => 48
[GEOIP_REGION_NAME] => Moscow City
собственно программно из пхп эти значения нужно и использовать:
if (isset($_SERVER['GEOIP_REGION_NAME'] && strpos($_SERVER['GEOIP_REIGION_NAME'],"oscow")) {
exit(header("location:moscow/index.php"));
}
либо через .htaccess :
rewriteengine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^RU$
RewriteRule ^(.*)$ /index.php?lang=ru [L]