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

Php 如何将不同的访问者重定向到不同的子域,php,web-applications,Php,Web Applications,如何将来自不同国家的不同访客重定向到不同的子域。像美国人一样-US.yourdomain.com,India-India.yourdomain.com你最好的选择是制作一个根页面,上面有你想要的所有国家和/或语言,并创建一个cookie来记住他们选择的内容。这样,如果他们不清除cookies,他们只会看到该页面一次。从这里下载MaxMind的GeoIP.dat数据库: http://geolite.maxmind.com/download/geoip/database/GeoLiteCountr

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

你最好的选择是制作一个根页面,上面有你想要的所有国家和/或语言,并创建一个cookie来记住他们选择的内容。这样,如果他们不清除cookies,他们只会看到该页面一次。

从这里下载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');
 }
 ?>
以及所提到的目标流量和rest流量的URL


国家代码可以在这里找到:MaxMind-iso3166国家代码

我想在Nirmal的回答中补充一点,一些服务器不能使用“Header('location:url')”

我不知道为什么,但这件事发生在我身上

因此,我没有使用“header(location…”,而是使用了echo和meta-refresh方法,顺便说一句,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; 
}
?>

在我的例子中,我只是想将任何不是美国人的人重定向到一个非美国网站。使其适应您的需要;)

不要犯谷歌的错误(好吧,所以我在西班牙,这并不意味着我想要西班牙语的谷歌,或者为居住在西班牙的人优化搜索结果,我只是在度假)。可能的重复
<?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; 
}
?>