在多語言網站中,良好的用戶體驗通常要求根據訪問者的瀏覽器語言或首選語言自動跳轉到對應的語言頁面。 PHP 提供了靈活的方式來實現這一點,其中最常用的就是通過header("Location: ...")實現重定向。
以下將介紹實現步驟及示例代碼。
大多數瀏覽器會在HTTP 請求中帶上Accept-Language頭,PHP 可以通過$_SERVER['HTTP_ACCEPT_LANGUAGE']獲取。例如:
$userLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
這段代碼取出了語言代碼的前兩個字母,如en (英語)、 zh (中文)、 fr (法語)。
接下來,你需要根據獲取到的語言代碼來決定跳轉到哪個頁面。例如:
switch ($userLang) {
case 'zh':
$redirectUrl = 'https://m66.net/zh/';
break;
case 'fr':
$redirectUrl = 'https://m66.net/fr/';
break;
case 'en':
default:
$redirectUrl = 'https://m66.net/en/';
break;
}
這裡我們做了簡單的分支判斷,如果是中文用戶跳轉到/zh/ ,法語用戶到/fr/ ,其他用戶(默認)跳轉到英語頁面。
最後一步,用PHP 的header()函數發送跳轉響應。注意,調用header()必須在頁面輸出之前,否則會報錯。
header("Location: $redirectUrl");
exit;
加上exit;是為了確保腳本在發送跳轉後立即停止執行。
<?php
// 獲取瀏覽器語言
$userLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// 根據語言跳轉
switch ($userLang) {
case 'zh':
$redirectUrl = 'https://m66.net/zh/';
break;
case 'fr':
$redirectUrl = 'https://m66.net/fr/';
break;
case 'en':
default:
$redirectUrl = 'https://m66.net/en/';
break;
}
// 發送跳轉頭部
header("Location: $redirectUrl");
exit;
?>
header() 必須在任何HTML 輸出或echo 之前調用,否則會導致headers already sent錯誤。
檢測更多語言:如果你的網站支持更多語言,可以擴展switch或使用數組映射。
添加語言切換選項:雖然自動跳轉能提升體驗,但建議用戶也能手動切換語言,避免自動選擇出錯。