如何将不同的访问者重定向到不同的子域

时间:2012-08-31 10:37:55

标签: php web-applications

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

3 个答案:

答案 0 :(得分: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');

以及上述目标流量和其余流量的网址。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

我不知道为什么但是这件事发生在我的工地上

所以不是“header(location ....)”而是使用了echo,然后是元刷新方法,顺便说一句,这被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 ‘<META HTTP-EQUIV=”Refresh” Content=”0; URL=http://non-us.hiboomedia.com”>’;
    exit; 
}
?>

在我的情况下,我只想将不是来自美国的任何人重定向到非美国网站。使其适应您的需求;)