[英]How to improve the speed of a redirect to a subdomain depending on user language?
[英]Redirect User Depending on Language
我有以下代码:
<?php
// List of available localized versions as 'lang code' => 'url' map
$sites = array(
"da" => "http://www.mysite.com/",
);
// Get 2 char lang code
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// Set default language if a `$lang` version of site is not available
if (!in_array($lang, array_keys($sites)))
$lang = 'en';
// Finally redirect to desired location
header('Location: ' . $sites[$lang]);
?>
如果是丹麦网站客户端,这会将用户重定向到该网站的丹麦(da)版本,该版本是主网站。 太好了
但是,我想,如果用户不是丹麦人,而是波兰语,德语等,它将用户重定向到位于子域的英文版网站
http://en.mysite.com/
如何在现有代码中实现呢? 提前致谢! -弗雷德里克·安徒生
编辑
像这样的解决方案;
$sites = array(
"da" => "http://www.mysite.com/",
"en" => "http://en.mysite.com/"
);
不起作用,因为它在重定向时会产生循环错误-至少在Google Chrome中是这样。
编辑2
session_start();
if (isset( $_SESSION['redirect']))
{
// do nothing / continue with rest of page
}
else
{
$_SESSION['redirect'] = true;
// List of available localized versions as 'lang code' => 'url' map
$sites = array(
"da" => "http://www.mysite.com/",
"en" => "http://en.mysite.com/"
);
// Get 2 char lang code
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// Set default language if a `$lang` version of site is not available
if (!in_array($lang, array_keys($sites)))
$lang = 'en';
// Finally redirect to desired location
header('Location: ' . $sites[$lang]);
exit();
}
您需要将默认选项添加到阵列中:
$sites = array(
"da" => "http://www.mysite.com/",
"en" => "http://en.mysite.com/"
);
编辑:如果您再次在"http://en.mysite.com/"
中调用此相同的代码,它将创建一个循环。 显而易见的解决方案是不在那里调用此代码,但是另一种解决方案是设置会话变量以指示已经进行了语言选择。
要添加该会话变量,您可以执行以下操作:
session_start();
if (isset( $_SESSION['redirect']))
{
// do nothing / continue with rest of page
}
else
{
$_SESSION['redirect'] = true;
// your language selection code with header call
exit();
}
$sites = array(
"da" => "http://www.mysite.com/",
"en" => "http://en.mysite.com/"
);
这个怎么样
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$sub_domain = ($lang == "da") ? "www" : "en";
$link = "http://".$sub_domain.".mysite.com/";
header('Location: ' . $link);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.