繁体   English   中英

根据语言重定向用户

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM