这个坑值得记一笔。英文版做了临时跳转到活动页,hreflang 还指向原地址,一个月后中英文两个版本的排名都下滑了。

原因不止一个,得分开看。hreflang 目标必须是 200 页面,跳转会让标签失效;活动结束后跳转没有撤掉,长期留在生产环境;sitemap 里的地址和 hreflang 指向不一致。

动手时先检查每个 hreflang 目标的状态码

for u in zh en ja; do curl -sI https://www.example.com/$u/ | head -1; done

撤掉活动跳转恢复原页面

return 301 https://www.example.com/en/;

剩下的就是重新提交 sitemap 并请求抓取

curl -sI https://www.example.com/sitemap.xml

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

中途换过一次思路,把范围缩到最小的那一层,反而快了。

怎么算真的好了,看的是同一批现象。所有 hreflang 目标都返回 200,两个语言版本的排名在数周内逐步恢复,抓取日志里不再出现跳转记录。

这里还有个坑。临时活动用 302 没问题,但不要让它长期存在,更不要让 hreflang 指过去,蜘蛛会反复抓取空转地址,白白消耗抓取预算。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189