適用於首頁入口,SEO 友善,無需載入頁面再跳轉。
<?php
// 取得瀏覽器語言前 5 碼(如 zh-cn, en-us)
$lan = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5);
if ($lan === "zh-cn") {
// 簡體中文 → 中文版
header("Location: gb/index.htm");
// 或輸出 meta refresh(不建議)
// echo "<meta http-equiv='refresh' content='0;URL=gb/index.htm'>";
} else {
// 其他語言 → 英文版
header("Location: eng/index.htm");
}
exit;
?>
改進建議: 支援更多語言、使用 Locale::acceptFromHttp() (intl 擴展) 更精準解析、記錄使用者偏好至 Cookie/Session 供後續優先參考。
放在 <head> 中,適合靜態頁面或無 PHP 環境。
<script>
(function() {
var lang = navigator.language || navigator.userLanguage; // 相容 IE
lang = lang.substr(0, 2).toLowerCase(); // 取前兩碼:zh, en, ja...
var urlMap = {
'zh': 'zh-cn.html', // 簡中
'tw': 'zh-tw.html', // 繁中(需進一步判斷)
'en': 'en.html', // 英文
'ja': 'ja.html', // 日文
'ko': 'ko.html', // 韓文
'de': 'de.html' // 德文
};
// 繁簡中文細分
if (lang === 'zh') {
var fullLang = (navigator.language || navigator.userLanguage).toLowerCase();
if (fullLang.indexOf('tw') > -1 || fullLang.indexOf('hk') > -1 || fullLang.indexOf('mo') > -1) {
lang = 'tw';
} else {
lang = 'zh';
}
}
var targetUrl = urlMap[lang] || urlMap['en']; // 預設英文
window.location.replace(targetUrl); // replace 不留歷史紀錄
})();
</script>
| 維度 | PHP 版 | JavaScript 版 |
|---|---|---|
| 執行時機 | 伺服器端,回應前 | 客戶端,頁面載入後 |
| SEO | 友善(直接 302/輸出內容) | 較差(爬蟲可能不執行 JS) |
| 快取 | 需注意 Vary: Accept-Language | 靜態頁可快取 |
| 語言偵測準確度 | 高(完整 Header) | 中(依賴 navigator API) |
| 使用者偏好覆蓋 | 易整合 Cookie/Session | 需自行讀寫 Cookie/localStorage |
<html lang="zh-CN"> 與 hreflang 標籤lang=zh-CN)實際效果可參考:https://www.gabion.cn