站内搜索里同一篇文章出现了中文和英文两条结果,地址只差末尾的 lang 参数,页面标题和描述完全一样。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

curl -s 'https://example.com/?lang=en' | grep -i canonical
curl -sI 'https://example.com/?lang=en' | head -1
# 应 301 到 /en/ 而不是原地输出

参数化切换让同一个模板输出多份内容,地址不同但正文高度相似,没有语言标记也没有规范地址指向,搜索引擎只能当成重复页面分别收录。这一点先确认清楚,后面就不用反复试。

碰到「语言参数重复收录」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

具体做法是,把语言前缀改成独立的路径 不再使用查询参数;给每个语言的版本都输出互相指向的语言标记;把旧的参数地址永久跳转到对应语言版本的路径。

改完照着核一遍,参数地址全部跳到对应语言路径 重复页面会被逐步合并掉。

作者 9823189