我有以下代碼:重定向用戶根據語言
<?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/
的如何實現那到現有的代碼?提前致謝! - 弗雷德裏克安德森
EDIT
溶液等;
$sites = array(
"da" => "http://www.mysite.com/",
"en" => "http://en.mysite.com/"
);
不起作用,因爲重定向時會產生循環錯誤 - 至少在Google Chrome中。
EDIT 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();
}
但是這樣做的話,它會創建重定向時,一個循環,並顯示錯誤 - 至少在Chrome中。儘管感謝您的快速回答! –
@Frederick Andersen如果它沒有在丹麥語版本中創建循環,則不應該在英文版中這樣做,除非您在丹麥語版本中做了與其他語言不同的內容。 – jeroen
你會如何去創建一個會話變量?而en.mysite.com不會在任何地方重定向。 –