客观的
我正在尝试根据用户语言完成自动重定向。我有一个完整的工作代码:
// List of available localized versions as 'lang code' => 'url' map
$sites = array(
"da" => "http://www.fredrixdesign.com/",
"en" => "http://en.fredrixdesign.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) 版本,这是主/根网站。如果用户是德语、英语、波兰语等,它将用户重定向到子域;en.fredrixdesign.com
,这是网站的英文版本。
但是,当丹麦用户访问我的网站时,就会出现问题。位于我的 header.php 顶部的代码不断执行,这意味着它不断创建重定向,最终由于重定向过多而迫使浏览器创建错误。这是有道理的。
问题
我的问题是;我将如何修改上面的代码,所以它只执行一次重定向?如果它刚刚完成重定向,它将继续执行该站点。