识别用户位置/ IP和更改信息的网站.基于此

cr0*_*z3r 8 html javascript geolocation web

标题很清楚.

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

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


我已在网站的每一页上说明了这种语言:

<meta http-equiv="content-language" content="en">
Run Code Online (Sandbox Code Playgroud)

这个例子当然来自http://en.chrishonn.com网站之一,这是英文版.

我希望有人可以帮我一臂之力.谢谢(如果我错过了什么,请告诉我).

AUS*_*eve 12

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

  • 接受语言+1,这是一种**更适合选择语言的方式而不是地理定位(即使地理位置100%准确).但是,它应该只在服务器端完成.客户端不提供Accept-Language; 相反,你只能得到`navigator.[user] Language`.但是,此设置与安装语言有关,与Accept-Language不同,安装语言不易用户配置.因此,它 - 以及使用它的这个插件 - 永远不应该被使用. (4认同)
  • @crozer:你不应该对用户请求浏览数据的语言而不是他们的位置最感兴趣吗?我认为`Accept`标题最符合用户的意愿. (3认同)

Dan*_*llo 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标头,其中包含有关用户语言首选项的信息.主流浏览器允许用户修改这些语言首选项.您可以从以下方面了解有关此技