如何将IP地址转换为国家?

问题描述:

我正在创建像nytime.com这样的新闻网站,但多国(不同国家的不同新闻和语言)。如何将IP地址转换为国家?

所以我需要将IP地址转换为国家,并将用户重定向到适当的子域。 例如,如果西班牙用户转到mysite.com他将被重定向到es.mysite.com

如果你愿意,可以为我推荐其他解决方案,但请记住它必须针对搜索引擎进行优化。

+1

就我个人而言,当我根据我所在的国家/地区(Google ...)获得其他网站时,我讨厌它,所以我只使用$ _SERVER [“HTTP_ACCEPT_LANGUAGE”]使用语言检测,只是更改语言设置,不同的内容。 – jeroen 2012-07-09 18:13:26

+0

这不仅是一个语言问题,也是一个内容问题(针对不同国家的不同内容)。所以在美国的一位意大利用户会看到美国的第一个新闻(之后他可以改变国家的新闻)。 – xRobot 2012-07-09 18:18:01

+0

我知道,这就是为什么我只是发表评论... – jeroen 2012-07-09 20:39:26

http://html5demos.com/geo/

这是一个很好的免费解决方案。

您可以为php地理定位付费,但价格昂贵。

您不能直接将IP转换为国家。但是,您可以使用具有针对各国的IP/IP范围的数据库,这是大多数网站执行此操作的方式。

MaxMind以适用于许多数据库和编程语言的格式或者作为Apache插件销售这些数据。这并不总是正确的,但它可能是准确的,你可以得到。

http://www.maxmind.com/app/ip-location

这不是一个JS方法的优点是不会提示用户透露他们的位置。

http://software77.net/geo-ip/

在右侧边栏

,您可以下载数据库

也有类似的数据库和服务,只是谷歌 “IP到国家”

退房

基本上你需要一个数据库,在那里你可以比较手中的IP并找出它的国家。 Maxmind为您提供自主数据库&代码示例,而IPinfoDB提供免费的API服务。

有没有内置的方法。互联网上有网络服务提供这种映射。这种数据库“GeoIP数据库”也可用于本地使用。

但最好订阅更新的网络服务并使用它来获取位置。 Google's Client Location API应该帮助你。

一些现代浏览器会向您发送用户位置信息。你可以使用它。但是由于这不是所有浏览器都遵循的,所以它不可靠。您可以查看w3.org提供的Geo Location API