先给出结论:当错误页面返回200时,不能只看状态码,也不能只凭页面文案判断。核对一致性的核心是分别取得“响应状态”“可见正文”“页面自述身份”三组证据,再判断它们是否指向同一个结果。若正文明确说页面不存在,而响应是200,则应以正文意图为线索继续核查;若正文只是空模板或通用首页,则更可能是路由或重写规则把错误请求交给了正常模板。
第一种条件:请求的是曾经存在、后来删除的独立内容页。此时先看响应头状态,再取正文首屏和标题,最后检查页面是否带有“已删除”“已迁移”等自述。若状态为200但正文是错误提示,优先怀疑应用层捕获异常后仍按成功渲染。动作是保存原始响应头和正文快照,再对照路由配置中该路径的兜底分支。这个动作的结果会决定下一步:若兜底分支返回200,就要改兜底逻辑;若兜底分支本身返回404,则问题可能在更前面的重写或缓存层。
第二种条件:请求的是不存在的随机路径。此时先看正文是否与站点正常页面明显不同,再看状态码。若随机路径返回200且正文是首页或空列表,通常说明通配路由或前端路由接管了所有路径。动作是用同一路径分别请求带与不带尾斜杠、带与不带查询参数的变体,观察响应状态和正文是否变化。若变体之间结果不同,下一步应检查重写规则和参数处理,而不是直接改模板。
多个角色对同一页面有不同理解时,常见分歧是“开发看到200,运营看到错误提示,SEO看到可访问”。把分歧转成项目,可以按以下顺序核对:
完成这四项后,把结论写成一句可核对的话,例如“该路径返回200,但正文自述为不存在,且规范链接指向首页”。这句话比“页面是死链”更便于开发定位,也比“状态码正常”更便于运营理解。
假设某站点删除了一篇旧文章,访问该文章路径时返回200,正文却显示“内容已下架”。此时不要直接判定为死链,也不要直接判定为正常页面。先保存响应头和正文快照,再检查应用层是否把“内容不存在”异常渲染成了200错误页。若确认是应用层返回200,动作是让该异常分支返回404或410;结果会影响下一步:返回404后,再检查站点内链和站点地图是否仍指向该路径,避免继续把用户和抓取引向错误页。
有些错误页面返回200是刻意设计,例如软404用于保留品牌体验。这类情况需要额外核对:正文是否明确告知用户内容不可用,页面是否提供返回有效内容的路径,以及是否与站点其他正常页面有明显区别。若只是把错误提示藏在图片或脚本里,正文没有可读自述,则不能仅凭视觉判断。
另外,缓存可能让同一路径在不同时间返回不同状态和正文。核对时应记录请求时间、缓存头和响应来源。若发现状态码与正文不一致,先排除缓存旧响应,再回到应用层检查。robots.txt限制抓取不等于可靠的索引移除;站点地图不保证收录;HTTPS也不保证页面内容与状态一致。不同搜索引擎对软404的处理支持情况须分别核查,不能用一个平台的表现推断另一个平台。
最终判断标准是:响应状态、可见正文和页面身份三者是否指向同一结果。若三者不一致,先按请求条件分组,再按路由、重写、缓存、应用异常四个位置逐层核对,直到找到能解释全部证据的那一层。