问题出现得很突然,日志倒是留得挺全。栏目改版时把 /news/ 下的文章全 301 到自身带斜杠的地址,规则写错成互相跳,日志里同一 URL 连续三次 301,之后蜘蛛两周没进这个目录。

真正麻烦的地方在于,几个原因的现象几乎一样。rewrite 规则把带斜杠和不带斜杠互跳,形成闭环。少数情况下是站内链接仍指向旧的不带斜杠地址。

还有一种情况,301 响应的 Location 指向同一路径,等于原地打转。

动手时先用 curl 跟一遍跳转链

curl -sIL https://www.example.com/news/1 | grep -Ei 'HTTP/|location'

然后检查 Nginx 里的 rewrite 规则

nginx -T | grep -n 'news' | head

修正后确认一跳到位

curl -s -o /dev/null -w '%{http_code} %{num_redirects}\n' https://www.example.com/news/1

手上没有现成的复现脚本,就照着线上请求手工拼了一个。

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

改完先别撤,确认这几项。修完规则后该 URL 一跳到位返回 200,目录抓取量在十天内恢复。

提醒一点。循环 301 比 404 更耗预算,蜘蛛会对整片目录降低信任,规则上线前用 curl 跟一遍跳转链最省事。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189