先看一个反直觉的结论:当错误页面返回 200 状态码时,单看状态码无法判断页面是否正常,必须把响应状态、页面实际内容、页面在站内的角色三者放在一起核对。如果三者不一致,处理方向取决于该 URL 是否仍然承担业务功能——保留并改写、保留但降级、或彻底退出,条件不同,动作不同。
核对一致性之前,先让证据可复查。对同一个 URL,用同一请求方式抓取响应,分别记录三样东西:HTTP 状态码与响应头、去标签后的正文文本、正文中出现的标题与关键提示语。假设某商品下架页返回 200,正文却写着“该商品已不存在”,这就是典型的“成功响应 + 错误内容”组合。
保存时注意两点:一是记录抓取时间与请求的 User-Agent,因为不同客户端可能拿到不同结果;二是保留原始响应的完整副本,而不是只截取状态码。后续判断“是内容错了还是状态码错了”,依赖的正是这份原始对照材料。
状态与内容不一致不是单一故障,至少有三类,处理前提完全不同:
区分方法很直接:看正文里有没有指向“该资源不存在”的明确表述。有,偏软 404;没有但主题变了,偏内容替换;正文近乎为空,偏渲染失败。三类的修复动作不能互换。
核对完一致性,接下来是取舍,判断依据是“这个 URL 现在还应不应该存在”,而不是“状态码是多少”。
适合保留并改写的前提:该 URL 仍有访问需求,或已有外部链接指向它,且站内存在可替代的同类内容。动作是把错误内容替换为真实有效内容,并确认状态码与内容重新一致。结果如何影响下一步:改写后需要重新核对一次响应,确认返回的是新内容而不是缓存或旧模板;若仍返回旧内容,说明问题在缓存或渲染层,而不是内容层。
适合保留但降级的前提:URL 对应的业务已终止,但仍有少量访问或链接价值。动作是保留可读的说明内容,同时明确其“已停止”的状态,而不是伪装成正常页面。这里要避免一个误区:用 robots.txt 屏蔽抓取并不等于完成索引移除,抓取限制和索引状态是两件事,不能互相替代。
适合彻底退出的前提:内容确实不存在,且没有替代页面,也没有保留价值。动作是让响应状态与“不存在”这一事实一致,而不是继续返回成功响应。退出后仍需观察该 URL 的抓取与展示情况,但要注意:抓取量或展示量归零并不能单独证明处理正确,它也可能来自抓取预算调整、站点整体改版或外部链接自然衰减。
第一个陷阱是把状态码当成唯一结论。200 只说明服务器愿意返回内容,不说明内容正确。反过来,一个返回错误状态的页面如果正文完整,也不能直接判定为故障,要看它是否本就不该被访问。
第二个陷阱是只看一个搜索引擎的结果。不同搜索引擎对软 404 的识别与处理方式并不一致,同一组响应在不同引擎下可能表现不同,因此核对时应分别观察,而不是用一家的表现推断另一家。站点地图提交也不保证收录,它只表达“希望被抓取”,不能用来证明状态与内容已经一致。
这套顺序的关键在于:先固定证据,再归类成因,最后才决定保留还是退出。跳过前两步直接改状态码,往往只是把不一致从一个位置挪到另一个位置,下一次核对时仍会暴露同样的问题。