同一份“页面不存在”的可见内容,如果响应头不同,搜索引擎、监控工具和人工复核会得出不同结论。最需要先分清的是:内容相同不等于响应语义相同。判断时应以HTTP状态码为主,而不是只看页面上的文字。
拿到一个404页面样本后,先不要讨论“该不该收录”,而是把响应头转成可核对字段。重点看三处:
HTTP/1.1 404 Not Found或HTTP/2 404:这是页面不存在的核心信号。Content-Type:确认返回的是HTML还是纯文本、JSON等。内容相同但类型不同,会影响抓取端把它当页面还是当接口错误。Cache-Control、Expires:决定中间缓存和浏览器是否长期保留这份错误响应。如果可见内容都是“页面不存在”,但一个返回404、另一个返回200,判断会完全分叉:前者通常表示资源已失效,后者可能被当作正常页面处理。此时不要用页面文案解释差异,先记录状态行和关键头字段。
多个角色对同一事实理解不同,往往是因为有人看浏览器渲染结果,有人看抓取日志,有人看监控告警。可以按下面动作统一口径:
Content-Type、Cache-Control、抓取时间、请求方法。这样做的结果是:如果三处记录都显示404,分歧通常来自对404含义的理解;如果命令行显示404、浏览器显示200,可能是缓存或前端路由改写,下一步应查缓存层和服务端路由,而不是改页面文案。
第一种判断是“是否算失效资源”。404通常表示资源不存在;200表示请求成功。二者即使展示同一段提示文字,也不应混为一谈。
第二种判断是“是否值得继续排查”。如果响应头是404,但页面内容里出现“系统维护中”,更合理的解释可能是错误页配置错误,而不是内容真的不存在。反过来,如果返回200且内容为“页面不存在”,则要检查是否把错误页做成了软404。
第三种判断是“监控是否应告警”。监控若只看状态码,404和200会触发不同规则;若只看页面关键词,就可能把正常404误报为故障。假设某站点把404页面的标题写成“找不到页面”,监控按标题匹配告警,那么所有正常404都会告警;改为按状态码和访问路径白名单匹配后,告警才会更接近真实异常。这个例子只说明比较方法,不代表任何平台的现行规则。
面对“内容相同但响应头不同”的争议,建议按以下顺序处理:
完成这一步后,下一步动作会变得明确:若确认是软404,应修正服务端返回码;若确认是缓存导致,应调整缓存策略并重新验证;若只是监控口径不同,应统一按状态码和路径记录,而不是继续争论页面看起来像不像404。
请求量下降、抓取量归零或某个统计项消失,都不能单独证明404处理正确。它们还可能来自抓取预算变化、日志采样、访问路径调整或监控口径变化。要判断是否真正解决,应同时核对响应头、抓取记录和实际访问日志,并确认这些记录来自同一URL和同一时间段。
同样,robots.txt限制抓取不等于可靠的索引移除,站点地图存在也不保证收录。对于404页面,最稳妥的做法仍是让响应头与页面语义一致,再用可复查的记录验证下一步动作。