-1

如何将来自不同国家的不同访问者重定向到不同的子域。像美国人一样 - us.yourdomain.com,印度 - India.yourdomain.com

4

3 回答 3

3

从这里下载 MaxMind 的 GeoIP.dat 数据库:

http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz Free Version (GeoLiteCountry)

然后从这里下载 geoip.inc:

http://geolite.maxmind.com/download/geoip/api/php/php-1.11.tar.gz 

提取并找到 geoip.inc 文件。

然后将这两个文件上传到页面所在的同一目录。编辑 php 页面并在其中使用此脚本:

<?php require_once('geoip.inc');
 $gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
 $country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
 $my_countries = array('us', 'ca', 'gb', 'fr', 'de', 'nl');
 if (!in_array(strtolower($country), $my_countries)){
 header('Location: http://www."ALL"TRAFFICURLGOESHERE.whatever');
 }
 else{
 header('Location: http://www."SELECTEDCOUNTRIES"URLGOESHERE.whatever');
 }
 ?>

只需更改您要在该行中定位的国家/地区代码:

$my_countries = array('us', 'ca', 'gb', 'fr', 'de', 'nl');

以及提到的目标流量和剩余流量的 URL。

国家代码可在此处找到:MaxMind - ISO 3166 国家代码

于 2012-08-31T11:11:56.857 回答
1

您最好的选择是创建一个根页面,其中包含您想要的所有国家和/或语言,并创建一个 cookie 来记住他们选择的内容。这样,他们只会看到该页面一次,前提是他们不清除 cookie。

于 2012-08-31T10:43:12.093 回答
0

我想补充一下 Nirmal 的回答,即某些服务器无法使用“Header('location:url')”

我不知道为什么,但这发生在我的现场

因此,我使用了 echo 而不是“header(location ....)”,然后使用了元刷新方法,顺便说一下,这被 seo 认为是更好的重定向。所以完整的代码是:

<?php
$website_root_path=’/path/to/root/’;require($website_root_path . ‘geoip.inc’);
$ip=$_SERVER[‘REMOTE_ADDR’];$gi=geoip_open($website_root_path . ‘GeoIP.dat’, GEOIP_STANDARD);
$country = geoip_country_code_by_addr($gi, $ip);
if ($country == ‘US’) {
}
else { 
    echo ‘&lt;META HTTP-EQUIV=”Refresh” Content=”0; URL=http://non-us.hiboomedia.com”&gt;’;
    exit; 
}
?>

就我而言,我只是想将非美国的任何人重定向到非美国网站。使其适应您的需求;)

于 2014-02-13T19:45:21.527 回答