同一地址出现不同结果,通常不是404本身有多个含义,而是请求条件不同:设备类型、登录态、Cookie、地区或缓存层改变了服务器返回的状态码与正文。要对照,先固定一组变量,再逐项变化,记录每次返回的状态码和可见正文,而不是凭截图争论。
对照前把观察拆成三层:网络层看到的状态码,页面层看到的正文,用户层看到的最终渲染。三层里任何一层不同,都足以让两个人对“这个地址是不是404”得出相反结论。
404,另一台收到200,说明服务端按请求条件做了分流。先记录状态码,能避免把渲染差异误判为服务端差异。
有效对照依赖变量可控。建议固定以下维度,每次只改一项:
如果同时改变设备和登录状态,就无法判断是哪一项造成差异。假设同一地址在未登录桌面端返回404,在已登录移动端返回200,此时至少存在两个候选原因,需要拆开重测才能收敛。
浏览器截图容易受缓存和扩展影响。用命令行请求工具分别以无Cookie和带Cookie方式请求同一地址,保存响应头与正文片段,是更稳定的证据。重点看状态码、Vary、Cache-Control和重定向链。
如果无Cookie请求返回404,带有效会话返回200,说明该地址对未授权访问隐藏了内容。这时下一步不是改404页面,而是确认这种隐藏是否符合预期,以及是否影响需要抓取该地址的环节。
注意:请求量、抓取量或某项统计归零,不能单独证明处理正确。它也可能来自流量下降、抓取预算调整或统计口径变化,需要结合状态码记录一起判断。
上述对照方法有一个明确反例:如果差异来自CDN或反向代理的缓存副本,而不是源站按身份分流,那么反复更换登录状态也不会改变结果,只有更换缓存节点或加随机查询参数才可能看到不同内容。此时把原因归到登录态就是错的。
另一个失效条件是软404:服务器返回200,正文却是“未找到”。这种情况下状态码对照无法区分真实内容与错误页,必须同时比对正文标题和关键内容块。
还需注意,robots.txt的抓取限制不等于可靠的索引移除;站点地图不保证收录。这些手段不能替代对状态码和正文的逐项核对。
对照完成后,产出一张表:每个变量组合对应的状态码、正文特征、是否可复现。若差异可复现且由身份决定,下一步是确认该分流是否为设计意图,并检查未登录状态下返回404是否会影响需要访问该地址的流程。若差异仅在特定缓存节点出现,下一步是清理或调整该层缓存规则,再重测同一组变量。
把“同一地址返回不同内容”从争论变成变量表之后,团队才能判断该修的是状态码、缓存策略,还是对404含义的沟通方式。