先把当时的情况摆出来。旧文章地址先 301 到栏目页,栏目页又 302 到活动页,活动页再跳回文章,蜘蛛抓到第二跳就不再跟了。

这类报错背后常见的原因有几处,逐个排除就行。历史规则层层叠加,没有做清理。另一种情况是活动期间的临时跳转没有下线。

少数情况下是不同插件各自写了一套跳转规则。

先打印完整跳转链

curl -sIL -o /dev/null -w '%{num_redirects} %{url_effective}' https://www.example.com/old

接着合并成一跳到位

rewrite ^/old/(.*)$ /new/$1 permanent;

剩下的就是清理失效的临时规则

grep -rn 'rewrite' /www/server/panel/vhost/nginx/

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

恢复的判定其实很直接。跳转次数降到一次,最终落地页可正常抓取,收录在数周内恢复。

链条中间只要有一跳是 302,后面的权重传递就会打折,迁移规则要定期清理,越堆越乱。把规则按时间倒序排列,新规则放在最前面,日后排查会省很多事。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189