根据浏览器语言从其他网站重定向用户

时间:2010-03-02 02:48:25

标签: php redirect

我想这样做:

if (user from other website, like google, or input our website URL directly in the browser)
{
//redirect according to browser languge
        if (!preg_match('/en-US/', $_SERVER['HTTP_USER_AGENT']))
        {
        wp_redirect("http://cn.gearor.com");
    }
}

我不知道如何编写第一个if语句,我不知道如何获取URL,以及如何检查它是我的网站或其他网站。如果是我的网站,什么都不做,如果不是我的网站,请检查浏览器是否为英文,如果不是,请重定向到http://cn.gearor.com

2 个答案:

答案 0 :(得分:2)

$_SERVER['HTTP_REFERER']是指向检查页面的完整网址。虽然这是了解你所寻找的东西的唯一途径,但并不能保证这一点。

此外,您可能需要检查$_SERVER['HTTP_ACCEPT_LANGUAGE']而不是$_SERVER['HTTP_USER_AGENT']以获取用户的语言。

这是full reference to the $_SERVER超全球数组。您应该检查密钥,尤其是那些以HTTP_开头的密钥。

答案 1 :(得分:2)

你想要这样的东西:

if (!preg_match('%your_domain.tld%i', $_SERVER['HTTP_REFERER']))
{
    if (!preg_match('/en-us/i', $_SERVER['HTTP_ACCEPT_LANGUAGE']))
        // .. do your stuff here.
}

我更改了语言检查以使用HTTP_ACCEPT_LANGUAGE,并且也不区分大小写(Opera使用en-US,其中Firefox和IE在我的测试中使用en-us)。

如果您要检查DEFAULT语言,也可以考虑使用/^en-us/i。语言字符串可以包含多种语言,逗号分隔。