Online Free Tools
  • Home
  • Dev Logs
Navigation
HomeDev Logs

修复点击语言切换到英文后仍被重定向回中文的问题。 | Dev Logs

Back to Logs

日期:2026年1月11日0时52分 摘要:修复点击语言切换到英文后仍被重定向回中文的问题。

【question】 页面点击选择英文语言,页面不生效,应该选择后显示对应的语言的页面

【try to solve】 根因是根路径 / 会基于 Accept-Language 做服务端语言协商:当浏览器偏好中文时,即使用户从中文页点击“English”跳到 /,也会被立即 302 回 /zh/,导致“切换不生效”。

修复方式:为“用户显式选择语言”提供稳定的显式语言 URL(例如 /en/、/zh/),并把页面语言下拉的跳转链接改为这些显式路径;同时让 Worker 始终在 /en/ 与 /zh/ 返回对应语言页面(不再在默认语言时重定向回 /),并调整静态页的客户端脚本以尊重任何语言前缀(包含默认语言前缀)。

验证:Accept-Language: zh 下访问 /en/ 返回 200 且不重定向;访问 / 仍会 302 到 /zh/。

【执行操作】

  • 修改:scripts/site/config.mjs(新增 withExplicitLangPath)
  • 修改:scripts/build-site.mjs(语言切换链接改用显式路径)
  • 修改:scripts/site/layout.mjs(客户端脚本尊重任意语言前缀)
  • 修改:src/index.ts(/en/、/zh/ 不再回跳 /)
  • 修改:src/pages/websiteHeadersPage.ts(工具页语言切换改为显式路径)
  • 执行:env SITE_LANGS=zh,en SITE_DEFAULT_LANG=en npm run build:site
Online Free Tools · Learning project · Iterating