在死链优化里,区分“访问抓取”和“索引结果”的关键是:抓取只说明搜索引擎来过、请求过这个 URL,索引才说明它被收录并可能出现在搜索结果中。一个已删除页面返回 404,搜索引擎仍可能反复抓取它,但这不等于它还在索引里;反过来,某个 URL 在索引里,也不代表它最近被抓取过。判断时必须把服务器日志、抓取工具报告和索引查询分开看。
服务器访问日志里的请求,只能说明某个爬虫在某个时间访问了该地址,以及返回了什么状态码。常见状态码的含义:
200:页面正常返回,抓取成功,但不代表已收录。301或302:发生了跳转,抓取的是旧地址,最终索引目标通常是跳转后的地址。404或410:页面不存在,抓取失败。若死链优化目标是清除索引,这是期望看到的结果之一。503:临时不可用,爬虫可能稍后重试,不能当作死链处理。日志里出现大量对同一死链的抓取,通常意味着该地址仍被外部链接指向,或站点内部还有入口指向它。抓取频繁不等于索引存在,只说明爬虫仍认为这个地址值得访问。
索引状态不能靠日志推断,要用与抓取无关的查询方式确认。可执行步骤:
site: 加具体 URL 查询,看该地址是否作为独立结果出现。注意:site: 查询结果本身可能不完整,只能作为判断依据之一,不能当作精确的收录数量。
面对一个死链,先判断它当前处于哪种状态,再决定动作:
这里要区分代价:返回 404 是最直接的死链信号,成本低;301 到新页面能保留部分权重,但要求新旧内容确实相关,否则属于误导跳转。用 robots.txt 限制抓取不是可靠的索引移除手段,因为被限制抓取的 URL 仍可能留在索引中。
假设某旧页面 /old-page 已下线,你想确认它是否还在索引中:
site: 查询 /old-page,记录是否出现独立结果。这套流程的判断结果是:抓取负责“告知”,索引负责“呈现”。两者不同步是常态,不能因为看到抓取就认为索引已更新,也不能因为索引还在就认为爬虫没来过。
以下情况容易把抓取和索引混为一谈:
下一步:选一个你已下线的旧 URL,分别做一次 site: 查询和一次日志筛选,把结果填入“抓取状态”和“索引状态”两栏,再按上面的处理顺序决定是补入口、改返回码,还是继续观察。