当前位置: 首页> 最新文章列表> 在多语言网站中,如何用 header("Location: ...") 实现用户自动语言跳转?

在多语言网站中,如何用 header("Location: ...") 实现用户自动语言跳转?

M66 2025-05-28

在多语言网站中,良好的用户体验通常要求根据访问者的浏览器语言或首选语言自动跳转到对应的语言页面。PHP 提供了灵活的方式来实现这一点,其中最常用的就是通过 header("Location: ...") 实现重定向。

以下将介绍实现步骤及示例代码。

1?? 获取用户的浏览器语言

大多数浏览器会在 HTTP 请求中带上 Accept-Language 头,PHP 可以通过 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 获取。例如:

$userLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

这段代码取出了语言代码的前两个字母,如 en(英语)、zh(中文)、fr(法语)。

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;
}

这里我们做了简单的分支判断,如果是中文用户跳转到 /zh/,法语用户到 /fr/,其他用户(默认)跳转到英语页面。

3?? 用 header() 发送跳转指令

最后一步,用 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 或使用数组映射。

  • 添加语言切换选项:虽然自动跳转能提升体验,但建议用户也能手动切换语言,避免自动选择出错。