在网站404处理里,区分访问抓取与索引结果的关键是看日志和搜索平台报表分别记录了什么:访问抓取说明搜索引擎的爬虫来过、请求过这个URL,索引结果说明这个URL是否进入了可被检索的库。一个404被爬虫访问,不等于它被索引;一个404没被访问,也不等于它从未被索引。判断时要分开看“请求记录”和“索引状态”,再决定是保留404、改成410,还是做跳转。
访问抓取看的是服务器访问日志、CDN日志或搜索平台提供的抓取统计。它回答的是:哪个爬虫、什么时间、请求了哪个URL、返回了什么状态码。索引结果看的是搜索平台的效果报表或站点查询结果,它回答的是:这个URL是否出现在搜索结果里、是否被标记为已排除、排除原因是什么。
两者不是一回事。日志里出现大量404请求,说明爬虫在访问这些地址;但搜索结果里没有它们,说明它们没有被索引。反过来,一个页面可能在搜索结果里存在,但最近没有出现在日志中,这可能是抓取频率下降,也可能是报表延迟。做网站404处理时,先把这两类数据放在同一张表里对照,不要用一个来源推断另一个来源的结论。
对每个404 URL,至少记录四项:返回状态码、最近抓取时间、索引状态、是否有有效替代页面。然后按下面的条件判断:
这里要避免一个常见误判:robots.txt 的抓取限制不等于可靠的索引移除。禁止抓取可能让爬虫无法读取页面,但已经建立的索引结果不一定因此消失。站点地图也不保证收录,它只是提交候选URL的方式之一。不同搜索引擎对410、移除请求和报表的支持情况不同,需要分别核查。
多人协作最容易返工的地方,是有人拿日志说“这个404被访问了,要跳转”,另一个人拿搜索结果说“搜不到,不用管”。为避免这种分歧,交付时固定一张404处理表,每行包含:
这张表的作用是让“访问抓取”和“索引结果”各自有独立列,不混在一起下结论。判断结果也要写清楚:如果某URL连续多次被抓取且仍被索引,跳转优先级高;如果只是日志里出现一次404、索引状态为未索引,通常不需要为它专门做跳转。
假设你手头有一批404 URL,按下面顺序处理:
这套步骤的适用条件是:你能拿到访问日志和搜索平台的索引数据。如果缺少其中一项,就只能先做保守处理——保留404、清理内部链接,等数据补齐后再决定是否跳转或改410。判断结果不是“404一定要跳转”,而是“被抓取且被索引的404优先跳转,未被索引的404优先保持原状并清理引用”。
下一步:从你当前的404清单里挑出最近30天有抓取记录的URL,逐个核对索引状态,把“被抓取且被索引”的行单独标记出来,先处理这一批。