先接受一个容易被忽略的前提:入口页面返回200,只说明该URL能取到内容,不代表指向深层的链接被解析、被跟随或被纳入候选。定位断点应从入口页的HTML出发,沿链接逐跳核对,而不是从入口页的状态码倒推整条链路健康。
取回入口页的原始响应体,确认深层链接确实存在于HTML中,而不是由脚本在客户端拼出。若链接来自JavaScript渲染,抓取端看到的内容可能与你浏览器中不同,此时“入口正常”只覆盖了渲染后的结果。下一步动作是保存原始HTML与渲染后DOM各一份,对比深层链接是否出现、href是否为空或占位符。
如果原始HTML中就有目标链接,断点更可能在后段;如果只在渲染后才出现,问题在入口页的呈现方式,深层本身未必失效。这个区分决定了你是改入口页,还是继续往下查。
沿入口链接请求深层URL,记录每一跳的状态码、Location和最终落点。常见断点有三类:
动作上,先只看状态码与最终落点,不急着改内容。把每一跳整理成一条“入口链接→跳转→落点”的路径,路径中任何一跳偏离预期,就是断点位置。若落点正确且返回200,再进入下一层检查。
深层链路失效常被笼统归为“没收录”,但原因不同,处理也不同。可核对的证据包括服务器访问日志、站点地图提交记录、以及页面自身的可索引信号。若日志中从未出现抓取深层URL的记录,问题偏向发现环节;若日志显示抓取过但反复返回异常,问题在响应或内容层。
这里有两个成立条件不同的判断:当深层链接在入口HTML中稳定存在、且日志有抓取记录时,优先查响应与canonical;当链接依赖渲染、日志无抓取记录时,优先查入口页的链接暴露方式。注意,robots.txt的限制只影响抓取,不等于可靠的索引移除手段;站点地图的存在也不保证收录。请求量或抓取量归零同样不能单独证明处理正确,它也可能是抓取预算转移、服务器临时不可达或日志采样缺失造成的。
假设入口页A链接到深层B,B又链接到更深的C。你观察到A返回200、C长期无抓取记录。此时不要直接判定C有问题,先按顺序验证:A的原始HTML是否含B的href;请求B是否返回200且canonical指向自身;B的HTML是否含C的href。若B的canonical指向A,则B可能不被当作独立页面,C的发现路径随之变弱——这是配置层面的断点,不是C本身失效。
按这个顺序走完后,你会得到一条明确的归属结论:断点在入口页的链接暴露、在中间页的规范化配置,还是在末端页的响应。动作的结果直接决定下一步——改模板、改canonical,还是修末端页状态码。
改完一处后,重复同一条逐跳路径,确认状态码、重定向和canonical与预期一致,并观察日志中深层URL是否出现新的抓取记录。若仍无记录,先排除日志延迟、采样和抓取端缓存,再考虑是否还有第二处断点。整条链路恢复正常不等于必然收录,收录仍取决于内容质量与抓取策略,但断点定位本身应给出可复核的证据链,而不是靠入口页的状态码下结论。