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

Я сделал сайт с некоторыми поддоменами; в соответствии с IP-адресом страны пользователь должен быть автоматически перенаправлен на соответствующий поддомен.

Пример:

Основной сайт abcd.com

  • Предположим, кто-то из Индии набрал этот адрес abcd.com,
  • затем страница перенаправляется на ind.abcd.com

4 ответа

Загрузите класс geoPlugin из:

http://www.geoplugin.com/_media/webservices/geoplugin.class.phps

Поместите файл index.php в вашу корневую папку:

<?php
require_once('geoplugin.class.php');
$geoplugin = new geoPlugin();
$geoplugin->locate();
// create a variable for the country code
$var_country_code = $geoplugin->countryCode;
// redirect based on country code:
if ($var_country_code == "AL") {
header('Location: http://sq.wikipedia.org/');
}
else if ($var_country_code == "NL") {
header('Location: http://nl.wikipedia.org/');
}
else {
header('Location: http://en.wikipedia.org/');
}
?>

Вот список кодов стран:

http://www.geoplugin.com/iso3166

Убедитесь, что на вашем сервере установлен модуль mod_geoip (расширение GeoIP).

Затем настройте свой .htaccess подать соответственно:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Start Redirecting countries

# Canada
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://ca.abcd.com$1 [L]

# India
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^IN$
RewriteRule ^(.*)$ http://in.abcd.com$1 [L]

# etc etc etc...

А вот и официальная документация.

Вы могли бы сделать это без require_once('geoplugin.class.php'); вот так:

<?php
$a = unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$_SERVER['REMOTE_ADDR']));
$countrycode= $a['geoplugin_countryCode'];
if ($countrycode=='US')
    header( 'Location: http://example1.com' ) ;
else 
    header( 'Location: http://example2.com' ) ;

?>

Если вы используете веб-сайт WordPress, то его легко использовать - (плагин Geo Redirect). Это работает как шарм. Легко использовать, легко реализовать.

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