先给结论:入口正常只能证明抓取通路和入口模板没有整体崩溃,深层链路失效通常出在链接发现、渲染后链接、规范指向或状态码中的某一环。定位方法是把“谁认为它正常”拆成可核对的项目——抓取日志、渲染后 DOM、内链路径和返回状态——再按两种条件分别处理:链接确实存在但未被跟随,与链接根本不存在。
同一句“深层页面没被抓”,在不同条件下指向完全不同的断点,先判断属于哪一种,再决定动作。
判断依据不是入口页面的状态,而是深层链接在“渲染前”和“渲染后”两个快照里是否都存在。若渲染前缺失、渲染后存在,断点大概率在渲染环节;若两个快照都缺失,断点在内链结构本身。
多角色对同一事实理解不同,往往因为各自看的是不同层面:开发看接口返回,运营看页面能打开,SEO 看抓取记录。把分歧落到四个可核对项上,争论就会收敛。
<a href> 出现。rel="nofollow" 或由脚本事件触发。这四项里任何一项与预期不符,都足以解释深层链路失效,且不需要假设抓取端出错。
假设某分类入口页可正常抓取,但第三层详情页长期未见抓取记录。先取入口页的渲染前 HTML,检索是否存在指向第三层的 <a href>。若不存在,直接进入内链改造,不必再查渲染。
若存在,再取渲染后 DOM 对比。渲染后链接消失,说明脚本在替换或重写节点,断点在渲染执行;渲染后链接仍在,则继续核对状态码与 robots 限制。
这个顺序的价值在于:每一步的结果直接决定下一步查哪里,而不是把所有可能项同时排查一遍。动作与结果之间是因果推进关系,不是并列清单。
链接存在但未被跟随。优先检查该链接是否被 nofollow、是否位于被 robots 限制的路径内、以及入口页自身是否被抓取。若入口页抓取正常而深层仍无记录,可先补一条静态可抓的链接路径,再观察抓取记录是否出现。需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除,反过来,解除限制也不等于深层页面会被抓取,两者是不同层面的事。
链接根本不存在。断点在内链结构,动作是让深层路径在渲染前 HTML 中就有可跟随的 <a href>,而不是依赖点击或滚动触发。改造后重新核对渲染前快照,确认链接稳定存在,再进入抓取观察阶段。
站点地图可以作为补充信号,但不保证收录;把深层 URL 放进站点地图,不能替代页面上的可抓链接。若深层页面本身返回 404 或 410,先修复状态码,任何链接改造都不会让一个失效地址被抓取。
存在几类情况会让上述顺序失灵,需要单独核对。第一,链接由用户交互后才注入,无脚本快照永远看不到,此时应直接以渲染后 DOM 为准,并确认渲染服务是否执行了脚本。第二,同一深层 URL 被多个入口以不同规范指向,规范标签可能把抓取信号集中到另一地址,表现为“深层链路失效”,实际是信号被合并。第三,不同搜索引擎对脚本渲染和链接发现的支持情况不同,须分别核查,不能用一家的表现推断另一家。
抓取记录、请求量或某项统计归零,不能单独证明处理正确。它还可能来自抓取预算重新分配、入口页面本身抓取频率下降、或统计口径变化。要确认断点是否真的修复,应回到渲染前快照与状态码这两个可复核的事实,而不是只看一个下降或上升的数字。
把上述核对项固定成一张可复用的检查表,下次遇到入口正常而深层失效时,先判断属于哪一种条件,再按对应顺序推进,就能把角色之间的理解差异转成可以逐项核对的项目,而不是反复争论谁看到的页面才是“真的”。