当源站直接访问返回 200,而经过边缘节点后返回 404,问题通常不在页面本身,而在边缘层的缓存、路由或回源配置。此时不要急着删缓存或改 robots.txt,先保留能区分“源站问题”和“边缘问题”的证据,否则下一步动作只能靠猜。
这两种原因的处理方式完全不同,但表面现象都是“源站正常、边缘 404”。区分依据是响应头,而不是页面内容。
Age 大于 0,同时 X-Cache 或同类头显示命中,那么更可能是旧 404 被缓存。假设一个场景:某页面在源站直接请求返回 200,经过边缘后返回 404。此时先记录边缘返回的完整响应头,再对比源站日志中是否出现同一时间的回源请求。如果源站日志没有对应记录,删除边缘缓存不会解决问题,因为请求根本没到源站;下一步应检查回源域名、回源端口和 Host 头配置。如果源站日志有记录且源站返回 200,但边缘仍返回 404,则问题更可能在边缘缓存层,下一步才是定向清除该 URL 的缓存并重新验证。
证据的目标是让另一个人或另一个系统能复现判断,而不是只留下一句“我这边看是 404”。
这些证据不需要全部来自同一工具,但必须能回答一个问题:404 是在边缘生成的,还是从源站带回来的。如果无法回答,后续任何“清缓存”或“改规则”都只是碰运气。
条件一:边缘缓存了旧的 404,源站当前返回 200。此时优先做定向清除,而不是全站刷新。动作是只清除该 URL 或该路径前缀的缓存,然后立即用同一请求头重新请求。结果如果变为 200,说明缓存层是主因,下一步应检查为什么旧 404 会被缓存,以及缓存键是否包含了不该包含的变量。结果如果仍是 404,说明还有回源或规则层的问题,应回到证据收集而不是继续刷新。
条件二:请求未到达源站,边缘自行返回 404。此时清除缓存无效,应优先检查回源配置。动作是临时用直连源站的方式验证同一路径,并对比边缘回源时使用的 Host 和路径。结果如果直连正常而边缘回源路径多出或缺少一段,说明路由改写是主因,下一步应修正回源规则并只对受影响路径重新验证。结果如果直连也异常,则问题可能不在边缘,应回到源站应用层排查。
robots.txt 的抓取限制不等于可靠的索引移除,也不能解释边缘节点为什么返回 404。站点地图不保证收录,更不会改变边缘节点的响应状态。如果边缘返回 404 而源站正常,提交站点地图或修改 robots.txt 通常不会让边缘节点恢复 200,反而会掩盖真正的回源或缓存问题。
例外情况是:如果确认边缘 404 是由抓取或索引层面的错误配置触发,并且你已经保留了完整的响应头、请求 ID 和日志证据,才可以考虑调整抓取相关配置。但调整后仍需重新验证边缘响应,而不是把“已提交”当作问题已解决。
每次动作后只记录一个核心结果:边缘返回的状态码是否变化,以及源站日志是否出现对应请求。如果状态码从 404 变为 200,下一步是确认缓存键和规则变更是否会影响其他路径;如果状态码不变但源站日志开始出现请求,下一步是检查源站对该请求的响应;如果状态码和日志都不变,下一步应停止重复清除缓存,转而检查边缘规则是否真正生效。
证据保留的终点不是“问题暂时消失”,而是能解释 404 由哪一层生成、由哪个条件触发。只有到这个程度,边缘节点异常才算被真正定位,后续的规则修改和缓存策略调整才有可复查的依据。