先别从首页重新爬一遍。入口正常说明问题多半不在整站可达性,而在某一段链接关系或渲染后的链接生成上;更有效的做法是把“入口到失效页”的路径切成几段,逐段确认哪一段开始返回错误或不再出现目标链接,再决定是保留这条路径、改写它,还是让搜索引擎退出该路径。
深层链路失效通常不是单一原因。定位前先确认断点属于哪一类,因为后续动作完全不同。
<a>,抓取工具自然走不到更深层。常见于导航被折叠、分页被脚本替换、或模板条件判断出错。一个可操作的判断动作:对同一入口页分别用“只取原始 HTML”和“执行脚本后再取 DOM”两种方式抓取,比较两者提取到的链接集合。如果原始 HTML 缺少深层链接而渲染后存在,问题在渲染依赖;如果两种方式都缺,问题在链接生成或模板;如果链接都在但目标报错,问题在目标页。这个结果直接决定下一步该改模板、改抓取方式,还是处理失效目标。
如果确认源码中存在链接、目标返回 200,且该目标确实需要被访问,那么这条路径应当保留,重点转向“为什么抓取没有继续”。
此时要检查的是抓取层面的限制,而不是链接本身。例如 robots.txt 是否禁止了深层目录。需要明确:robots.txt 的抓取限制不等于可靠的索引移除——它阻止抓取,但不保证已收录页面从索引消失,两者不能互相替代。如果深层路径被 robots 屏蔽,抓取工具会在入口之后停下,这恰好符合“入口正常、深层失效”的表象。
另一个容易被误判的信号是站点地图。站点地图里列了深层 URL,不代表抓取工具会顺着它继续发现链接,也不保证收录。把站点地图当作“深层链路正常”的证据是不成立的;它只是候选 URL 清单,不能替代对实际链接关系的检查。
保留路径的代价是:你需要持续维护这条链路,包括模板、脚本和抓取配置三处的一致性。只要其中一处变动,深层链路可能再次断开。适合链接关系稳定、目标页有长期价值的场景。
如果断点出在链接生成方式,比如深层链接依赖某个前端路由或点击后才注入,而目标页本身是有效的,那么改写比删除更合适。
改写的方向是让深层链接在初始 HTML 中就能被提取,或至少让抓取工具能稳定获得。具体动作可以是把关键导航改为服务端输出、为分页提供可抓取的 <a> 链接、或在渲染后再触发一次链接提取并与初始结果合并。
改写后要验证的是“链接是否真的进入了可抓取集合”,而不是“页面看起来能点开”。验证方法是重新抓取入口页并提取链接,确认目标 URL 出现在结果中,再请求该 URL 确认返回正常状态码。只有这两步都通过,深层链路才算恢复。
改写的代价是改动前端或模板结构,可能影响现有交互。适合目标页有持续价值、但当前链接形态对抓取不友好的场景。
如果深层目标已经下线、内容不再需要,或者修复成本高于收益,那么正确动作是让这条路径退出,而不是反复修补。
退出不等于简单屏蔽。如果目标页需要从索引中移除,仅靠 robots.txt 限制抓取通常不够,因为已收录的 URL 可能仍留在索引中。更直接的方式是让目标返回 410 或 404,并在确实需要时配合移除请求。这里要避免一个常见误判:某个 URL 的抓取量或请求量归零,并不能单独证明它已被正确移除;请求减少也可能来自抓取预算调整、内链减少或抓取工具暂时降低频率,需要结合状态码和索引状态一起看。
退出的代价是放弃这条路径可能带来的访问,并需要处理指向它的内链,避免留下更多失效链接。适合目标已废弃、迁移或明确不再维护的场景。
假设某站结构为首页 → 分类页 → 列表页 → 详情页,首页和分类页正常,列表页开始出现 404。按上面的方法定位:
假设检查结果是:链接存在、目标返回 200、robots 未屏蔽,但原始 HTML 中链接缺失,渲染后才出现。此时应选择改写而非退出,因为目标有效。改写后重新抓取并确认链接进入可抓取集合,再决定是否需要对同类模板批量处理。这个顺序保证每一步动作都有明确的验证结果,避免在未确认断点位置前就大范围改动。