英文版是机器翻译后直接发布的,html 里的 lang 还是 zh-CN,正文也没做任何声明。三个月后英文页几乎全部掉出索引,GSC 开始提示重复内容。
一开始怀疑是「英文页 canonical 指回中文原文,等于主动放弃收录」,查了一圈,方向不对。
原因不止一个,得分开看。lang 写成 zh-CN,英文正文被当成中文页的异常内容。另一种情况是译文段落与中文原文重合度高,又没有 hreflang 区分语言。
还有一种情况,英文页的 title 与描述与中文页完全一样。
动手时先确认 lang 与 canonical 的写法
curl -s https://www.example.com/en/post-1 | egrep -o '(lang|canonical)="[^"]*"'
接着把语言声明改成 en
sed -i 's/<html lang="zh-CN"/<html lang="en"/' templates/en.html
给译文页补上 hreflang 组与 x-default
python gen_hreflang.py --locales zh-CN,en --x-default zh-CN
复验抓取时的响应与标记
curl -sI https://www.example.com/en/post-1 | head -1
改完先别撤,确认这几项。英文页的 lang 与 canonical 都指向自身,一个月后重复内容提示消失,英文页收录从 40 条涨到 900 条。
容易忽略的是,机器翻译稿要当成独立语言版本对待,lang、canonical、hreflang 三处都指向英文自己,指回原文就是让引擎不必收录。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
