Как перенаправить на другой URL, идентифицирующий браузер И язык системы (PHP?

Проблема

У нас есть веб-сайт ccTLD (example.de) с подпапками для разных языков, который, очевидно, необходимо переместить на example.com для правильного выбора языка. Так как example.com принадлежит компании родительской группы, которая до сих пор 301 посещает всех посетителей us-group.com и не хочет разрешать нам 301ing example.de для example.com и отказываться от их существующих 301s на us-group.com, нам нужно немного поработать.

Задание

  • Посетители из Северной и Южной Америки должны быть перенаправлены на us-group.com
  • Посетители из всех остальных стран (таких как Европа и Юго-Восточная Азия) должны быть перенаправлены с example.de на example.com и оставаться там без перенаправления на us-group.com

Соревнование

Мы полагали, что многие посетители из Америки используют прокси-серверы, поэтому перенаправление по IP не будет возможным. Us-group.com просто потеряет большую часть своего предыдущего трафика.

Можно ли перенаправить их с помощью сценария PHP с сочетанием браузера и языка системы (например, EN-US, FR-CA, EN-CA, ES-AR, PT-BR и т. Д.)? Если так, как это могло быть сделано?


Дополнительные мысли: Очевидно, это не единственное, что мы рассматриваем, чтобы сделать. Прежде чем перенаправить посетителей из Америки, мы бы:

  1. изменить настройки DNS домена example.com (запись: IP-адрес будет изменен на IP-адрес немецкого сервера)
  2. измените запись vhost, чтобы немецкий сервер перенаправлял посетителей example.com в каталог example.com/en/ (содержащий английские части содержимого example.de)
  3. Перенаправьте посетителей из стран Америки на us-group.com (с помощью браузера & Язык ОС, как уже упоминалось выше)

-1

Решение

Я использую что-то похожее на это, это основано на языке браузера, а не на языке системы в любом случае.

if(!isset($_COOKIE['language'])){
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
switch($lang){
case "en-US":
$rURL = "www.example.com";
break;
default:
$rURL = "www.example.de";
}

if(isset($rURL)){
setcookie("language", $rURL);
header("HTTP/1.1 303 See Other");
header('Location:' . $rURL);
}
}

Конечно, вы можете изменить время хранения куки и так далее 🙂

ОБНОВИТЬ
Если вы хотите перенаправить пользователя обратно на исходный / обнаруженный сайт (если они по ошибке или другим способом вернутся не в тот домен, вы можете просто использовать

if(!isset($_COOKIE['language'])){
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 4);
switch($lang){
case "en-US":
$rURL = "www.example.com";
break;
default:
$rURL = "www.example.de";
}

if(isset($rURL)){
setcookie("language", $rURL);
header("HTTP/1.1 303 See Other");
header('Location:' . $rURL);
}
}else{
header("HTTP/1.1 303 See Other");
header('Location:' . $_COOKIE['language']);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]