问题出现得很突然,日志倒是留得挺全。站点改版后有八百条旧地址失效,在百度站长平台提交了死链,两周后搜索里还能搜到其中大部分。用 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 的「已删除」提示页是最常见的坑,状态码不对,提交多少次都不会被当成死链处理。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
