先别把“入口页正常”当成整条链路健康。入口页能收录,只说明它自身可被抓取、可被理解;深层页面失效,往往断在入口页到目标页之间的某一跳。定位方法是把链路拆成可核对的节点,逐跳验证,而不是反复提交入口页或增加外链。下面以一个假设的栏目结构为例,说明如何把分歧转成可执行的处理方案。
不同角色说“深层页没收录”,可能指三件不同的事:抓取没发生、抓取发生了但没索引、索引了但外链没有真实呈现。这三种结果的证据不同,处理动作也不同。
把这三类分开记录,团队对同一事实的理解才会收敛。否则运营说“没收录”,开发说“日志有抓取”,双方各说各话。
假设结构是:栏目入口页 A → 列表页 B → 详情页 C,外链包指向 C。A 正常收录,C 不收录。按下面的顺序逐跳核对,每一步都留下可复查的证据。
<a href> 是静态输出还是由脚本注入。若脚本注入且需要交互才触发,抓取端可能看不到。每完成一跳,把结果写成“节点—证据—结论”三列。下一步动作取决于上一跳的结论:如果断在 A 到 B,就修链接输出方式;如果断在 B 到 C,就修列表生成逻辑;如果 C 自身不可抓取,就先解决 C 的返回与渲染问题。不要跳过前一步直接去改 C 的内容。
多个角色对同一事实有不同理解时,争论“到底收录没有”没有意义。把问题转成下面这份清单,每人认领自己能核对的项。
这份清单的价值在于:它把“我觉得没收录”变成“这一跳的链接在渲染后不存在”。结论可核对,动作可分配,下一步不需要再开会争论。
假设外链包指向详情页 C,入口页 A 正常收录。团队最初判断是 C 的内容质量不够,准备重写 C 的正文。按上面的方法先核对链路,发现 A 到 B 的链接由前端框架异步注入,抓取端拿到的 A 的 HTML 里没有这条链接。此时真正的断点在 A 到 B,而不是 C 的内容。
处理动作随之改变:先让 A 到 B 的链接以静态形式出现在初始 HTML 中,再观察 B 和 C 是否被重新发现。这个动作的结果决定了下一步——如果 B 和 C 随后出现抓取记录,说明断点确实在链接输出;如果仍然没有,才需要继续检查 B 到 C 的列表逻辑或 C 自身的可抓取性。这个例子中的数字和结构均为假设,用于说明比较方法,不代表任何真实项目的结果。
需要提醒的是,抓取量或请求量归零不能单独证明处理正确。它也可能是抓取预算调整、站点整体流量变化或日志采样方式改变的结果。判断断点是否修复,要看目标 URL 是否重新出现在抓取记录中,并且索引状态是否随之变化,而不是只看某一个统计数字的升降。
不同搜索引擎对脚本渲染、动态链接和站点地图的支持情况不同。同一个断点在某个搜索引擎下可能已经恢复,在另一个下可能仍然存在。修复后分别核查各搜索引擎的抓取记录和索引状态,不要用一家的结果推断另一家。必要条件是:目标 URL 可被抓取、入口到目标的链接在渲染后真实存在、且没有互相冲突的规范标签。满足这些条件后,再观察收录状态的变化,而不是承诺某个时间点一定生效。