这个坑值得记一笔。英文版做了临时跳转到活动页,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 指过去,蜘蛛会反复抓取空转地址,白白消耗抓取预算。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。