问题出现得很突然,日志倒是留得挺全。站点改版后有八百条旧地址失效,在百度站长平台提交了死链,两周后搜索里还能搜到其中大部分。用 curl 访问这些地址,返回的是 200 和一个「内容已迁移」的提示页。

刚开始盯着「页面做了 JS 跳转,蜘蛛看到的是跳转后的页面」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。失效地址被统一指向一个提示页,状态码仍是 200。还有一种是提示页里有站内导航和推荐,被判定为正常内容。

不容易想到的是,提交的死链文件格式有误,平台只解析了前几十条。

第一件事是确认这些地址实际返回什么状态码

curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/archives/12345.html

随后把对失效地址的响应改成 404 或 410

location = /notice.html { return 410; }

接着确认死链文件格式,一行一个完整地址

wc -l deadlinks.txt; head -3 deadlinks.txt

末了重新提交后按周查看删除进度

别只看报错消失,验证要多做一步。失效地址返回 410,两周后搜索结果里的条目开始减少,四周后基本清空。

提醒一点。返回 200 的「已删除」提示页是最常见的坑,状态码不对,提交多少次都不会被当成死链处理。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189