MaxMind GEO_IP Redirect

У меня была эта проблема некоторое время! В любом случае я скачал php-модуль Maxminds GEOIP и загрузил его на свой сервер, а затем поместил этот раздел кода на свою страницу index.php

<?php
require_once("geoip/geoip.inc");
$gi = geoip_open("geoip/GeoIP.dat",GEOIP_STANDARD);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);

$my_countriesrow = array('AD','AE','AF'......and so on);
$my_countrieseuro = array('AN','AT','BA','BE','BG','BY'.......and so on);
/* $my_country = array('GB','UK'); */

if (!in_array(strtolower($country), $my_countriesrow)){
    header('Location: https://www.website.com/row/index.php');
    exit();
}
elseif (!in_array(strtolower($country), $my_countrieseuro)){
    header('Location: https://www.website.com/euro/index.php');
    exit();
}
else {
    header('Location: https://www.website.com/index.php');
    exit();
}
?>

Я загрузил страницу на свой сервер, и в Google Chrome я получаю.... Эта веб-страница имеет цикл перенаправления

The web page at https://www.website.com/index.php has resulted in too many redirects. Clearing your cookies for this site or allowing third-party cookies may fix the problem. If not, it is possibly a server configuration issue and not a problem with your computer.

так же, как в Firefox! Кто-нибудь получил какие-либо идеи, как я все из....

Заранее спасибо!

Филип Дьюс

ОБНОВИТЬ

ОК РЕШИЛИ ПОЕЗДАТЬ МАРШРУТ.HTACCESS! Я отредактировал свой файл htaccess, чтобы он выглядел следующим образом....

GeoIPEnable On
GeoIPDBFile /geoip/GeoIP.dat

# Europe
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]

# Rest Of World
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AD$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AE$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AF$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AG$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AI$
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AL$
RewriteRule ^(.*)$ https://www.Website.com/row$1 [L]

Но по какой-то причине я получаю 500 внутренних ошибок, даже после ввода в каждой отдельной стране это все еще не работает для меня! действительно не знаю, что делать сейчас, так как я работал над этим более недели, используя различные сценарии php, и теперь это. Надеюсь, что кто-нибудь может помочь Спасибо еще раз заранее, я спрашиваю, потому что есть много кодов стран, которые нужно вводить вручную, поэтому не хочу вводить их все только для того, чтобы убедиться, что они не будут работать! Большое спасибо еще раз!

-Phillip

3 ответа

Решение

Ну, если ни один из ваших операторов if не совпадает, вы перенаправляете на /index.php, Поскольку код, который вы редактируете, служит index.php, просьба /index.php перенаправляется... снова, чтобы index.php, Вы, вероятно, хотите:

$my_countrieseuro = array('AN','AT','BA','BE','BG','BY'.......and so on);

if (in_array(strtolower($country), $my_countrieseuro)){
    // European version
    header('Location: https://www.website.com/euro/index.php');
    exit();
} else {
    // International version
    header('Location: https://www.website.com/row/index.php');
    exit();
}

Причина, по которой большие стеки операторов RewriteCond в файле.htaccess не работали, заключается в том, что они логически И объединялись.

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AM$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AO$ [OR]
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^AQ$
RewriteRule ...some special stuff for any of these hosts... 

Вам понадобится это "локальное ИЛИ" в квадратных скобках в конце каждого условия, чтобы избежать неявного И.

Ну, я не уверен, что сделал бы это так.

Почему бы тебе не "поиграть" немного с htaccess файл?

Проверьте мой ответ здесь:

как перенаправить домен по IP-адресу страны

Я думаю, что это может быть правильным для вас тоже...

Другие вопросы по тегам