问题
我们有一个ccTLD网站(example.de),其中包含不同语言的子文件夹,显然需要将其移至example.com以进行正确的语言定位。由于example.com属于母公司集团公司,该公司迄今为止已向所有访问者发送电子邮件至us-group.com,并且不愿意允许我们将example.de发送到example.com并将其现有的301放弃到us-group.com,我们需要解决一下。
任务
挑战
我们认为来自美洲的许多访问者使用代理,因此通过IP进行重新路由不是一种选择。 us-group.com只会丢失很多以前的流量。
是否可以使用结合了浏览器和系统语言的PHP脚本重新路由它们(例如:EN-US,FR-CA,EN-CA,ES-AR,PT-BR等)?如果是这样,怎么办呢?
其他想法:显然,这不是我们考虑做的唯一事情。在重新路由来自美洲的访客之前,我们会:
答案 0 :(得分:0)
我使用类似的东西,这是基于浏览器语言而不是系统语言。
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);
}
}
您当然可以更改Cookie的存储时间等等:)
<强>更新强> 如果您想将用户重定向回原始/检测到的网站(如果他们错误或以其他方式返回错误的域名,您只需使用
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']);
}