将用户重定向到特定国家/地区的子域

时间:2011-09-03 11:30:41

标签: php wordpress redirect

我有一个网站www.xyz.com,其中包含特定国家/地区X的内容。此外,我还有另一个网站目标指向同一个域名的子域名,例如subdomain.xyz.com

我可以使用任何免费的geo ip数据库和一些php脚本来实现重定向,我成功地做到了这一点,但现在问题是

访问网站www.xyz.com的国家Y的人被重定向到subdomain.xyz.com,但他想要检查www.xyz.com它再次将它们重定向到subdoamin.xyz.com。

我希望这是谷歌的方式,所以如果假设从阿联酋访问google.com的人被重定向到google.ae但是如果他们点击转到Google.com,他们会被重定向到google.com而没有任何问题。

我需要为我的网站实现这个..

网站是wordpress。请建议我最好的解决方案。

确定以下是我使用过的代码..

/**
 * Example 6
 *
 * This is what google probably do with users around the world
 *
 * Multiple declatations
 */

// Start by including CountryDetector class
include("./src/CountryDetector.class.php");

// You dont need to create instance of this class you can access only on static context

// Google.co.uk
CountryDetector::redirect("AE", "http://uae.jobscow.com");

// Google Germania
CountryDetector::redirect(array("DE", "AT"), "http://google.de"); // Ausrian and German users

// Google China
CountryDetector::redirect("CN", "http://google.cn");

// Google sweden
CountryDetector::redirect("SE", "http://google.se");

// Google norwegia
CountryDetector::redirect("NO", "http://google.se");

// Google serbia
CountryDetector::redirect("RS", "http://google.rs");

// AND SO ON...

// Finally: Google.com - international
CountryDetector::redirect("international", "http://google.com");

>

您建议我在此

中做出哪些更改

4 个答案:

答案 0 :(得分:2)

使用引用者检查:如果他们到达www.xyz.com且referer不是国家站点,则重定向到国家/地区站点。

如果他们点击国家/地区网站上的“转到www.xyz.com”,则引用者将是country.xyz.com,然后您不会重定向。

您还可以使用cookie来存储客户对此事项的偏好。

RFC2616 section 14.36解释了Referer头字段,this article显示了如何在php中使用它。

编辑:作为替代方案 - 因为当lars声明用户或路径上的某些内容可能会停用它/删除标题时 - 您可以使用www.xyz上的虚拟“登录页面”来提示访问者来自的服务器国家/地区服务器:

<a href="www.xyz.com/fromcountryserver.php">Go to xyz</a>

或者为什么不添加请求变量,指示浏览器来自国家/地区服务器。愚蠢的例子只是为了表明意图

<a href="www.xyz.com/index.php?comingfrom=countryserver">Go to xyz</a>

或这些技术的混合。更多的工作,但除非一些疯子重写URL客户端,它应该始终有效。

答案 1 :(得分:2)

我认为这只是谷歌用于这个愚蠢伎俩的cookie。

让我建议你在一些HTTP嗅探器上导航到谷歌。那是一个极具教育意义的企业。

答案 2 :(得分:0)

  1. 安装GeoIP PHP Extension http://www.videochat-scripts.com/install-geoip-php-extension/
  2. 检测用户的国家/地区http://php.net/manual/en/book.geoip.php
  3. 如果用户登陆错误的网站,则重定向用户

答案 3 :(得分:-1)

在您的网络服务器上使用重定向(如果您使用,则使用Apache)或通过javascript(重定向功能)将其插入页面。

如果您正在使用Apache,如果您使用MaxMind获取访问权限(可以使用其他服务,我认为没有问题),您可以使用mod_alias配置重定向,即:

GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

# Redirect one country
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://www.canada.com$1 [L]

# Redirect multiple countries to a single page
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CA|US|MX)$
RewriteRule ^(.*)$ http://www.northamerica.com$1 [L]

更多信息:http://httpd.apache.org/docs/current/mod/mod_alias.html

你也可以通过PHP获取客户端的地址并构建一个像这样的javascript函数(但Apache解决方案更优雅):

function redir()
{
if(checkCountryViaIp(ip) == countryx)
{
    window.location = "countryxpage.php"
}
    //etc...
}