识别用户位置/IP 并更改语言的网站。基于此

问题描述 投票:0回答:6

标题很清楚。

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

但是,我想知道,像 Google、Yahoo! 和其他品牌的网站这样的大型网站如何识别用户的地理位置/IP,以便根据情况调整网站的语言(即您来自中国,并且您访问 www.google.com,您将被重定向至 www.google.cn)。


我在网站的每一页上都标明了语言:

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

该示例当然来自 http://en.chrishonn.com 网站之一,该网站是英文的。

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

javascript html web geolocation
6个回答
13
投票

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


10
投票

对于 Google,您的位置是根据您的 IP 地址确定的。从美国境外向 google.com 发出的请求会返回一个

HTTP/1.1 302 Found
,它将您重定向到您所在国家/地区的特定域。

正如另一篇文章中所讨论的那样,进行此类重定向可能会使 SEO 变得棘手和复杂。我建议阅读 Matt Cutt(Google 软件工程师)关于 Google 如何处理 302 重定向的文章:SEO 建议:讨论 302 重定向

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


如果您想通过 IP 地址确定用户的位置,有许多现成的服务基本上可以将大部分 IP 范围映射到国家/地区。您可能想检查:


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



1
投票

有些网站使用基于 IP 地址的地理位置,有些网站使用接受语言标头(可以在浏览器中设置)。无论如何,从可用性的角度来看 - 始终允许人们更改语言,并且永远不要在同一 IP 上显示不同的内容(谷歌和其他搜索引擎不喜欢它,从 SEO 的角度来看这会很糟糕)。


1
投票

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

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

此后,您的应用程序要做的就是根据国家/地区决定您的用户应该在哪里,或者默认情况下他们应该具有哪些设置,并适当地重定向或输出。


0
投票

您可以对此 URL 执行 GET 请求:https://api.teletext.io/api/v1/geo-ip,它将以 JSON 格式响应一些国家/地区信息。请参阅 https://teletext.io/help/geo-location-service 了解使用方法。

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.