如何根据国家/地区的IP地址重定向网站

Posted

技术标签:

【中文标题】如何根据国家/地区的IP地址重定向网站【英文标题】:How to redirect a website according to country's IP address 【发布时间】:2017-01-06 15:45:27 【问题描述】:

我正在开发一个消息应用程序,其服务器端代码是用 Erlang 开发的。

我面临的问题是关于根据国家特定域重定向网站。

例如:当用户在消息框中输入google.co时,它会自动显示google.co.uk,如果我在印度,如何将其重定向到google.co.in

为了查找国家/地区的位置,我在 github 上找到了这个库:https://github.com/mochi/egeoip

如何使用此地理位置重定向到特定国家/地区的特定网站?

ScreenShot, when I entered facebook.com, it automatically displays preview in my local language.

但在我的应用程序中,它会以某种外语显示预览,可能是俄语。

【问题讨论】:

通过 IP 获取国家/地区,拥有将国家/地区映射到域的数据集,必要时重定向……?你到底在哪里坚持这个? @deceze 不同的网站有不同的域,比如google、facebook等,我怎样才能做一个通用的集合?可能有其他方法可以解决这个问题? 没有这样的广义集合。由每个服务/网站/公司来设置他们的国际域名,他们可以用他们想要的任何方式来做。 @deceze 问题:我使用 IP 获得了位置,现在我的应用必须确定是重定向到 google.co.in 还是 google.co.uk,也许我不明白你想要什么传达,所以你能详细说明吗? 好吧,创建一个数据集,上面写着country: India -> google.co.in 等等。然后根据检测到的国家/地区从列表中选择适当的一个。是的,您必须为您想要使用的每个可能的域创建此数据集,即所有 Google 域的某些内容、所有 Facebook 域的某些内容等。 【参考方案1】:

我已经阅读了 cmets,并且由于您不考虑将数据集作为一种选择,我认为您可能想要做的是这样的事情:

首先要了解这些预览是如何工作的。在任何(流行的)消息传递应用程序中,如果您输入 URL,该应用程序将向该 URL 发送请求并获取网站元数据。然后它将显示在 UI 中。

国家检测有点复杂,可以通过多种方式完成。但幸运的是,你(几乎)不需要做任何事情。这是一个相当长的话题,但我会尽量缩短它。


文本本地化

在某些网站中(在您的示例中可能是 Facebook 的情况),它们会在应用层进行国家/地区检测,然后根据该国家/地区,它将使用特定语言作为网站文本。这一切通常发生在网站呈现其内容之前,因此您不必担心。

地理DNS

这发生在 DNS 层,并且可能是最流行的。可以为域名分配少量 IP 地址。这些 IP 可以指向网站的不同版本,在 GeoDNS 的情况下,将由 DNS 管理员为 IP 分配国家/地区。因此,当 DNS 查询来自俄罗斯时,将解析请求 IP 的国家/地区,然后返回分配给它的 IP(如果有)。这由网站使用,特别是针对特定国家/地区的功能或内容。最好的例子是 Netflix。

重定向

如果 Google 将您重定向到其他域,他们可能就是这样做的。国家正在通过应用程序(HTTP)层中的 IP 地址解析,然后进行 301/302 重定向,指向新域名。这个,你可能需要做点什么。因此,鉴于您的应用程序需要对用户输入的 URL 进行 HTTP 请求,如果它返回重定向,您必须遵循它。许多 HTTP 库/客户端已经这样做了,但在某些情况下,您可能必须显式打开选项以遵循重定向。


需要注意的重要一点是在客户端执行 HTTP 请求。否则,无论您的用户在哪里,您都将解析到同一个国家(您的服务器所在的国家)。

【讨论】:

以上是关于如何根据国家/地区的IP地址重定向网站的主要内容,如果未能解决你的问题,请参考以下文章

根据国家/地区重定向,但如果 IP 被列入白名单则允许

如何根据符合特定条件的国家/地区代码重定向URL

如何根据国家IP地址重定向域

MVC 3 - 基于国家的重定向?

地理定位网站的网站结构

根据 IP 位置管理重定向