Перенаправлять пользователей с других сайтов на основе языка браузера - PullRequest
0 голосов
/ 02 марта 2010

Я хочу сделать это:

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 ]

2 голосов
/ 02 марта 2010

Вы хотите что-то вроде:

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 в моих тестах).

Вы также можете использовать /^en-us/i, если проверяете язык DEFAULT. Языковые строки могут содержать несколько языков, разделенных запятыми.

2 голосов
/ 02 марта 2010

$_SERVER['HTTP_REFERER'] - это полный URL, который привел к странице, которая его проверяет. Это не гарантируется, хотя это единственный способ узнать, что вы ищете.

Кроме того, вы можете выбрать $_SERVER['HTTP_ACCEPT_LANGUAGE'] вместо $_SERVER['HTTP_USER_AGENT'] для языка пользователя.

Вот полная ссылка на суперглобальный массив $_SERVER. Вы должны проверить ключи, особенно те, которые начинаются с HTTP_.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...