先给结论:入口正常只能证明入口这条链路通,不能证明深层链路也通。定位断点的关键是沿用户或爬虫的真实点击路径逐跳验证,而不是只看首页返回码。具体做法取决于一个前提——失效的深层页面是该彻底退场,还是其中仍有需要保留的内容。两种条件下,排查顺序和修复动作完全不同。
第一种前提:深层页面属于旧内容、旧系统或旧合作关系的产物,业务上已经决定退出,只是入口还挂着链接。此时排查目标是找到所有仍然指向它的引用,逐一清理或改指向,而不是把页面救活。
第二种前提:深层页面中仍有部分内容有价值,比如旧版说明里保留了仍然适用的参数表、旧合作方页面里有仍需引用的资质信息。此时排查目标是找到链路在哪一跳断掉,让仍然有用的部分以新地址或新结构继续可访问。
判断依据不是页面新旧,而是这个深层地址是否还有外部引用、是否还在站点导航或站点地图里、是否有其他页面把它当作下一跳。三者中有任意一项成立,就偏向第二种前提。
入口返回 200 时,深层失效通常发生在中间跳转或资源加载环节。按下面的顺序逐跳检查,每一步都记录实际返回码和最终落点:
完成这一步后,你会得到一张断点清单。清单决定下一步动作:断在跳转链就修跳转,断在资源就修资源引用,断在地址本身才考虑重定向或下线。
如果确认深层页面应当退出,实际动作是回到引用方处理,而不是在深层地址上反复挂重定向。具体包括:把入口页里的链接替换为仍然有效的目标,或直接移除;检查站点地图和内部搜索是否还在输出这个地址;检查其他页面是否把它当作下一跳。
这里有一个常见误判:把 robots.txt 里加一条限制当作清理完成。robots.txt 只约束抓取,不等于索引移除,已经收录的地址仍可能出现在结果里。真正要退出时,需要区分“不再被抓”和“不再被展示”是两件事,分别处理。
另一个例外:如果这个深层地址有外部引用且无法联系引用方修改,直接让它 404 会让外部访问者落到死路。此时用一个指向最相关仍然有效页面的重定向,比保留一个空壳页面更合理。这个选择的前提是目标页面确实相关,否则会把用户引到不匹配的内容上。
如果深层页面里仍有需要保留的内容,先判断这部分内容能否脱离旧结构独立存在。能独立存在,就把它迁移到新地址,再把旧地址重定向到新地址;不能独立存在,比如它依赖旧系统的动态参数,就只保留一个说明页,明确告知该功能已不可用。
迁移后必须回到入口链路重新验证一遍。因为迁移会改变地址,原来正常的入口链接可能变成新的断点。验证时同样沿真实点击路径走,不要只测新地址本身。
站点地图可以作为发现深层地址的线索,但它不保证收录,也不保证收录的就是你期望的版本。把它当作待核查清单,而不是验证结果。
假设入口页 A 里有一个链接指向 B,B 会 301 到深层页 C。现在 A 正常,C 返回 404。逐跳验证会发现 B 仍然返回 301,但目标 C 已不存在。此时断点在 B 到 C 这一跳,而不是 A 或 C 本身。
如果 C 应当退出,动作是修改 B 的跳转目标或直接移除 B,让 A 指向新的有效地址;如果 C 仍有价值,动作是恢复 C 或把 B 指向迁移后的新地址。两种动作都会改变入口链路,所以改完必须从 A 重新走一遍,确认没有产生新的断点。
这个例子说明:入口正常时,排查重点在入口之后的每一跳。把每一跳的实际返回码和最终落点记录下来,断点位置自然浮现,后续是清理还是迁移也就有了明确依据。