Перенаправление пользователей исходя из их IP.

Discussion in 'PHP' started by STET, 12 Jun 2013.

  1. STET

    STET Member

    Joined:
    19 May 2009
    Messages:
    0
    Likes Received:
    14
    Reputations:
    0
    Перенаправление пользователей

    На сайте есть 15 разделов с однойменными названиями с названиями русских городов.
    Пока посетитель должен сам вибирать с какого он города и только тогда ему видны телефоны и описание услуг в данном городе.

    Подскажите, пожалуйста, как можно реализовать автоматическое перенаправление посетителя на нужный адрес исходя из его IP-адреса?
    Буду благодарен за любую помощь.
     
    #1 STET, 12 Jun 2013
    Last edited: 13 Jun 2013
  2. qw1mb1

    qw1mb1 Member

    Joined:
    8 Feb 2013
    Messages:
    113
    Likes Received:
    16
    Reputations:
    8
    http://php.net/manual/ru/book.geoip.php
     
  3. STET

    STET Member

    Joined:
    19 May 2009
    Messages:
    0
    Likes Received:
    14
    Reputations:
    0
    qw1mb1, спасибо.
    Может кто-то, кто уже сталкивался с этим вопросом, может привести пример рабочего кода?
     
    #3 STET, 12 Jun 2013
    Last edited: 12 Jun 2013
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://stackoverflow.com/questions/10054687/maxmind-geo-ip-redirect
     
    _________________________
    1 person likes this.
  5. STET

    STET Member

    Joined:
    19 May 2009
    Messages:
    0
    Likes Received:
    14
    Reputations:
    0
    Спасибо тебе, Kaimi!
     
  6. STET

    STET Member

    Joined:
    19 May 2009
    Messages:
    0
    Likes Received:
    14
    Reputations:
    0
    Вот тут в .HTACCESS файле прописывается:

    Code:
    GeoIPEnable On
    GeoIPDBFile /geoip/GeoIP.dat
    
    RewriteEngine on
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AM$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AO$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AQ$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AR$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AS$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AU$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AW$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AX$
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AZ$
    RewriteRule ^(.*)$ https://www.Website.com/europe$1 [L]
    То есть, если посетитель из любой из этих европейских стран, то его нужно перенаправить в раздел сайта /europe

    Но мне нужна идентификация не по странам (которые указаны в GeoIP.dat), а по русским городам.
    Вот я нашел библиотеку GeoLiteCity.dat, но вот не знаю, какие аргументы мне использовать для указания городов.. Мне например нужны Москва, Самара и другие. Информация в GeoLiteCity.dat в бинарном виде, а документации никакой нету.
    Как быть?
     
  7. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    Если сервер nginx, можете использовать ngx_http_geoip_module, очень подробная инструкция: http://nginx.org/ru/docs/http/ngx_http_geoip_module.html

    Code:
    $geoip_city
    название города, например, “Moscow”, “Washington”. 
    Посмотрел начинку GeoLiteCity-Location.csv, там все просто:
    Code:
    locId,country,region,city,postalCode,latitude,longitude,metroCode,areaCode
    и пример
    23541,"RU","48","Moscow","",55.7522,37.6156,,
    
    Но будьте внимательны, в других странах тоже есть такие города.
     
    _________________________
    #7 VY_CMa, 12 Jun 2013
    Last edited: 13 Jun 2013
  8. STET

    STET Member

    Joined:
    19 May 2009
    Messages:
    0
    Likes Received:
    14
    Reputations:
    0
    Спасибо.
    Так можно же идентифицировать города по locId.
    Какую константу нужно прописать вместо "***_*****_***", используя GeoLiteCity?
    Code:
    RewriteCond %{ENV:***_*****_***} ^23541$
    "***_*****_***" ~ "locId"
     
    #8 STET, 13 Jun 2013
    Last edited: 13 Jun 2013
  9. GAiN

    GAiN Elder - Старейшина

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    #9 GAiN, 13 Jun 2013
    Last edited: 13 Jun 2013