入口页面能被抓取、也能出现在结果里,并不代表从它出发的深层路径同样有效。定位断点最有效的做法,是把“谁认为它正常”拆成可核对的证据:先确认入口到深层的每一跳返回什么,再确认深层页面是否真的进入过索引候选。若入口页本身是近期新发或依赖客户端渲染,这个结论会失效,因为入口的正常可能只是表象。
多个角色对同一事实有不同理解,通常是因为各自看到的是不同层。运营看到入口页能打开,开发看到接口返回 200,SEO 看到入口页有展示,这三件事不能互相替代。可以按下面的顺序核对,每一步都留下可复查的记录:
<a href>,还是脚本执行后才出现。这四步里,任何一步的结论都不能单独证明链路健康。入口页返回 200 但链接由脚本注入,抓取端可能拿不到深层 URL;深层页面返回 200 但正文依赖接口,索引端可能只看到空壳。
断点通常不在“入口”或“深层”这两个端点,而在中间某一跳。假设一个栏目入口页包含 30 个详情链接,其中 12 个在原始 HTML 里就有,另外 18 个由前端请求后拼接。此时可以分别取两类链接各若干条,记录它们的返回状态、是否被跳转、最终落点是否与预期一致。
如果原始 HTML 里的链接全部可达,而脚本注入的链接部分落向登录页或空列表,那么问题更可能出在渲染时机或接口权限,而不是入口页本身。反过来,如果两类链接都可达,但深层页面互相指向同一个 canonical,断点就在规范化设置,而不是抓取通道。
这里要说明一个反例:若入口页刚刚发布、尚未被任何抓取端访问过,那么“入口正常”只是浏览器视角的观察,不能作为链路判断的起点。此时应先确认入口页是否被真实抓取过,再谈深层断点,否则定位会停在没有依据的推测上。
当开发说“接口没问题”、运营说“页面能打开”、SEO 说“没收录”时,争论的其实是不同对象。可以建一张最小核对表,把每个角色的说法落到一个可验证项上:
需要提醒的是,robots.txt 的抓取限制不等于可靠的索引移除;站点地图不保证收录;HTTPS 不保证安全无漏洞或排名。这几条常被当成结论使用,实际只能作为线索。
假设某站入口页在服务端输出 20 条链接,翻页后由脚本追加。抓取端记录了入口页,但深层详情页几乎没有被抓取记录。此时若只检查入口页状态码,会得出“链路正常”的错误结论。改为逐条请求那 20 条链接,发现其中 5 条返回 302 到列表页,另外 15 条可达。断点因此收窄到那 5 条链接的生成规则,而不是整条链路。
下一步动作应当是修正这 5 条链接的生成条件,然后重新观察深层页面是否出现抓取与索引候选记录。若修正后仍无变化,再检查深层页面自身的 canonical 与 robots 设置,而不是继续在入口页上找原因。
如果深层页面的内容依赖用户登录、地理位置或个性化接口,那么同一 URL 对不同请求方返回的结果不同,逐条请求得到的结论就不能直接推广。此时需要区分“抓取端看到的版本”和“用户看到的版本”,否则会把权限差异误判为链路断点。请求量或抓取量归零也不能单独证明处理正确,它还可能来自抓取预算调整、站点整体改版或外部链接变化。
因此,定位断点的前提是:入口到深层的每一跳对抓取端和用户端返回一致,或者至少能明确说出差异来自哪里。满足这个前提,逐跳记录才有判断价值;不满足时,应先固定一个可复现的请求环境,再继续下一步核对。