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-адресу страны
Я думаю, что это может быть правильным для вас тоже...