那个对每个访客都正常、却向每个爬虫撒谎的 Bug
来源:dev.to — 2026-08-23
📋 概述
作者运营一个支持五种语言、112 个工具的独立网站 DukoTools,一直以为只要页面存在于某个语言路径下就说明该语言翻译存在。直到有人评论提醒才发现:22 个工具根本没有阿拉伯语翻译,却照样返回 HTTP 200、声明 lang="ar"、并在 hreflang 里自称是该语言的权威版本,正文却是纯英文——这就是所谓"软 404",人类看不出任何问题,但搜索引擎把它当成可信度信号。更糟的是 112 个工具里 103 个的 H1 标题从上线起就一直是英文,因为标题存在与 SEO 正文完全不同的命名空间里,没人检查过。作者最终把"某个工具支持哪些语言"的逻辑从四处硬编码数组收敛成单一函数,并让未翻译语言直接返回真正的 404。
🔑 核心要点
- 软 404 指的是页面返回 200、声明某种语言、却渲染成别的语言的文本,人类看不出破绽,但搜索引擎会当成信任问题。
- "哪个工具存在哪些语言"的逻辑被复制在四处硬编码数组里,彼此假设其他工具全都有翻译,这正是出错的根源。
- 112 个工具中 103 个的页面标题从未被翻译过,因为标题存在与 SEO 正文完全不同的命名空间,没人检查过。
- 修复方案是收敛到单一 getAvailableLocales 函数作为唯一事实来源,并让不存在的语言组合直接返回真正的 404。
💡 金句
一个缺失的页面是诚实的;一个看起来像是被错译的页面才是信任问题。
👍 0
👎 0
← 返回 dev.to 首页