我有两个域名。 rajasekar.com和rajasekar.in。我需要做的是,
当来自印度的用户在地址栏中输入网址为www.rajasekar.com然后它应该打开www.rajasekar.in
当其他国家的用户在地址栏中输入网址为www.rajasekar.com时,应该打开www.rajasekar.com
我认为这是在GOOGLE中实现的。请帮助我实现这个目标
答案 0 :(得分:2)
答案 1 :(得分:2)
在ASP.NET中,使用以下方法获取客户端的IP地址:
Request.ServerVariables("REMOTE_ADDR")
使用某些IP地理位置服务,例如:
到达国家后,您可以轻松地重定向用户:
Response.Redirect("http://www.yourdomain.in")
答案 2 :(得分:1)
您可以尝试根据用户的远程地址猜测国家/地区。
以下是一个有效的解决方案,您必须使用重定向逻辑:
$remoteAddr = $_SERVER['REMOTE_ADDR'];
$lookupUrl = sprintf('http://api.hostip.info/country.php?ip=%s', $remoteAddr);
$country = trim(file_get_contents($lookupUrl));
if ('IN' === $country)
{
$newUrl = 'http://www.rajasekar.in/';
header(sprintf('Location: %s', $newUrl));
printf('<a href="%s">Moved.</a>', $newUrl);
exit();
}
请注意,来自印度的搜索引擎机器人也能够抓取.com内容。
答案 3 :(得分:1)
Accept-Language请求标头将告诉您用户将其浏览器设置为的语言/区域。
答案 4 :(得分:0)
而不是(或至少除此之外)查看IP地址的国家/地区,您应该检查Accept-Language
HTTP标头(PHP中的$_SERVER['HTTP_ACCEPT_LANGUAGE']
)
此标头通常包含语言 - 国家/地区对:
en-US, hi_IN, fr, de;q=0.5
PHP intl extension has methods that help parsing it
普通用户无法更改其IP地址或其地址在IP地理数据库中的分类方式。用户更有可能选择/配置其操作系统/浏览器的语言,这会影响Accept-Language
标题。
国家/地区的ISP代理与用户不同,例如AOL通过美国路由一些国际流量,许多移动用户使用在挪威拥有代理服务器的Opera Mini。如果您正在查找IP,请至少考虑X-Forwarded-For
标头。 Accept-Language
标头通过代理传递,没有出现此类问题。
我一直在使用hostip.info数据库,发现它不完整并且包含错误。还要考虑每次向第三方PHP脚本发出HTTP请求会减慢您的网站速度并浪费资源。解析Accept-Language
标题基本上是免费的。
如果您不仅仅想要国家/地区,但语言用户会说话,那么对于使用不同语言的国家/地区,IP→国家/地区将不准确。 Accept-Language
可能会为您提供更准确的信息(例如,比利时为荷兰语nl_BE
,加拿大法语为fr_CA
。
这两种方法都不是100%正确,因此让用户覆盖您的选择是明智的。
另请注意,如果您强制重定向到“正确”域,则搜索引擎机器人将无法为您的所有域编制索引,因为它们很可能来自美国的IP地址,并且不会指定首选语言。最好不将检测应用于.com
以外的域,和/或不将其应用于主页以外的页面。