次のコードがあります。
<?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]);
?>
これにより、デンマーク語の Web サイト クライアントの場合、ユーザーはメイン サイトであるデンマーク語 (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();
}