如何将来自不同国家/地区的不同访问者重定向到不同的子域。像美国人一样 - us.yourdomain.com,印度 - India.yourdomain.com
答案 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;
}
?>
在我的情况下,我只想将不是来自美国的任何人重定向到非美国网站。使其适应您的需求;)