日期: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