结论有条件:只有当“网址是否应继续存在”的判断权被收归到一个可审计的规则源,404 的责任方才是唯一的;否则 404 只是结果,不是责任。更实际的做法是让一个系统拥有“保留或退出”的最终裁决,其他系统只能引用它的输出,而不能各自生成同一路径的可用状态。下面按这个前提展开,并给出一个会让结论失效的反例。
多系统并存时,常见角色不是平级的,而是三层:
唯一责任方应当落在路由层,而不是内容源或边缘层。原因是 404 是“路径级”的响应,路由层最接近“这个路径现在是否还有对应资源”的判断。内容源只回答内容是否存在,边缘层只回答请求怎么被转发或缓存,它们都不该单独决定某个旧路径是否应该返回 404。
不要用“谁负责”这种口头约定,而要写成一条可判定的规则,例如:
这样做的实际动作是:先把保留路径表导出,与线上实际返回 200 的路径做一次比对。比对结果会直接决定下一步——如果线上有大量不在保留路径表中却仍返回 200 的路径,说明路由层没有真正拿到裁决权,此时不应继续加规则,而应先收回其他系统的生成权限。
假设路由层被指定为唯一责任方,但边缘层配置了一条“旧路径命中缓存则继续返回旧内容”的规则。此时即使路由层已经把某路径移出保留表并返回 404,用户仍可能看到 200 的旧页面。这种情况下,唯一责任方在名义上成立,在事实上不成立。
判断依据不是“有没有 404”,而是同一路径在不同层是否出现不一致的可用状态。如果边缘层、路由层、内容源对同一路径给出不同结论,那么责任方就没有唯一化。反例成立的条件是:边缘层拥有独立于路由层的状态判断能力,并且没有被要求以路由层结果为准。
旧内容、旧系统或旧合作关系退出时,往往不是整站退出,而是部分保留。此时唯一责任方要能表达三种状态,而不只是“存在”和“404”:
这里要避免一个常见误判:robots.txt 的抓取限制不等于可靠的索引移除,站点地图不保证收录。因此,把某路径从站点地图移除、或在 robots.txt 中限制抓取,都不能替代路由层对 404 的裁决。它们只是辅助信号,不是责任归属。
选一组已经决定退出的旧路径,分别在内容源、路由层、边缘层记录它们当前的状态,然后对照三者是否一致。如果一致,说明唯一责任方已经落地,可以继续按保留路径表推进;如果不一致,先修权限和优先级,而不是先修 404 本身。这个动作的结果会决定后续是进入批量退出,还是回到系统权限收归阶段。