识别用户位置/ IP&改变了。基于此

时间:2010-01-10 22:59:43

标签: javascript html web geolocation

标题很清楚。

我的网站包括英文版和西班牙文版。 您可以点击http://www.chrishonn.com以及http://en.chrishonn.com的英文翻译版本,访问西班牙语主网站。在每个页面的索引处都有一个链接(在底部),允许用户从一个站点传递到另一个站点。

然而,我想知道,谷歌,雅虎等大型网站以及其他品牌的网站如何识别用户的地理位置/ IP,以便 - 根据这一点 - 网站的语言被改编(即你来自中国,您访问www.google.com,您将被重定向到www.google.cn


我在网站的每一页都说过语言:

<meta http-equiv="content-language" content="en">

该示例当然来自其中一个http://en.chrishonn.com网站,这些网站是英文版。

我希望有人能帮助我。 谢谢(如果我错过了什么,请告诉我)。

6 个答案:

答案 0 :(得分:12)

您可以检查浏览器设置的默认语言,而不是检测IP地址的位置(通常由于NAT和代理而不可靠)。 有支持此功能的JQuery插件,例如http://keith-wood.name/localisation.html,或使用服务器端代码读取HTTP请求标头“HTTP_ACCEPT_LANGUAGE”以确定是否要显示ES或EN站点。

答案 1 :(得分:10)

对于Google,您的位置取决于您的IP地址。来自美国境外的google.com请求会返回HTTP/1.1 302 Found,并将您重定向到您所在国家/地区的特定域名。

As also discussed on another post,进行这些重定向可能会使SEO变得棘手和复杂。我建议您阅读Matt Cutt的文章(Google软件工程师),了解Google如何处理302重定向:SEO advice: discussing 302 redirects

不同的搜索引擎以不同的方式处理302重定向。使用302重定向时,搜索引擎可能会忽略原始域名。


如果您想从其IP地址确定用户的位置,则有许多现成的服务基本上将大多数IP范围映射到国家/地区。您可以查看:


另一种流行的技术是解析Accept-Language HTTP标头,其中包含有关用户语言首选项的信息。主流浏览器允许用户修改这些语言首选项。您可以从以下网址了解有关此技术的更多信息:


答案 2 :(得分:1)

有些网站使用基于IP地址的地理位置,有些我们接受语言标题(可以在浏览器中设置)。无论如何,从可用性的角度来看 - 总是允许人们改变语言,永远不会在同一个IP上显示不同的内容(谷歌和其他搜索引擎不喜欢它,从SEO的角度来看也不好)。

答案 3 :(得分:1)

这些网站通常使用通常称为“地理定位软件”的工具。

最受欢迎的软件包之一是MaxMind提供的免费GeoLite Country数据库。这将集成到您的应用程序中并提供IP到国家/地区的查找。使用Apache,您将拥有一些名为GEOIP_COUNTRY_CODE和GEOIP_COUNTRY_NAME的环境变量。

您的所有应用程序必须在确定您的用户应该在何处或默认情况下应根据国家/地区进行设置,然后重新定向或输出。

答案 4 :(得分:0)

您可以对此网址发送GET请求:https://api.teletext.io/api/v1/geo-ip,它会以JSON格式回复一些国家/地区信息。有关用法,请参阅https://teletext.io/help/geo-location-service

如果您想自己实施:我使用AWS Cloudfront进行设置,Cloudfront会在您将请求转发到您可以使用的源服务器之前为您的请求添加标头(Cloudfront-Viewer-Country)。确保将Cloudfront分发中的标题列入白名单。

答案 5 :(得分:0)

我创建了云分发,白名单列出了CloudFront-Viewer-Country标头。 但是,当我使用此分发访问对象时,我没有在请求标头中看到它。