Как перенаправить на другой 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 и т. Д.)? Если так, как это могло быть сделано?
Дополнительные мысли: Очевидно, это не единственное, что мы рассматриваем, чтобы сделать. Прежде чем перенаправить посетителей из Америки, мы бы:
- изменить настройки DNS домена example.com (запись: IP-адрес будет изменен на IP-адрес немецкого сервера)
- измените запись vhost, чтобы немецкий сервер перенаправлял посетителей example.com в каталог example.com/en/ (содержащий английские части содержимого example.de)
- Перенаправляйте посетителей из Северной и Южной Америки на 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']);
}