先给结论:入口页面返回正常,并不能证明深层链路健康。要定位断点,应当把“入口可抓取”与“深层可发现、可响应、可渲染”分开验证,用逐层收窄的方式找到第一处异常,而不是从日志中看到大量成功请求就判断整条链路无问题。下面的情境是假设的,用于说明决策顺序。
假设某站点栏目入口页返回 200,robots.txt 允许抓取,站点地图也包含该入口。但入口页下方的分页、筛选页或详情页始终没有出现在抓取日志里。此时最容易犯的错误,是把“入口页被访问”当成“深层链路被完整发现”。入口页正常只说明第一跳没有硬性阻断,后续每一跳都可能独立失效。
要区分解释,先看断点出现在哪一层:
继续上面的假设情境。先不要批量提交或改规则,而是选一条从入口到深层的完整路径,按顺序记录每一跳的状态。
<a href> 形式存在。如果链接只由脚本拼接,抓取端可能看不到。这个顺序的价值在于:每一步都能排除一类解释。如果入口页 HTML 里根本没有深层链接,那么后面查状态码就没有意义;如果链接存在但返回 403,问题就不在发现层。
假设抓取日志显示深层路径请求量明显下降。这个现象本身不能单独证明链路已失效,因为还有几种合理解释:入口页改版后链接位置变深、站点地图更新延迟、抓取预算被其他路径占用、服务器在特定时段返回超时,或者抓取端只是暂时降低了该路径的抓取频率。要区分这些解释,需要把请求量变化与状态码分布、链接位置变化、站点地图最后修改时间放在一起看。
一个实用动作是:对同一深层路径做一次带完整请求头的直接请求,记录状态码与响应体。如果直接请求正常而抓取日志中该路径长期缺失,那么断点更可能在上游的发现或允许环节;如果直接请求也异常,则应优先处理响应层。这个结果会直接决定下一步是改链接结构、调整规则,还是排查服务端。
当入口页正常、深层链接也存在,但深层内容始终无法被稳定获取时,渲染依赖值得优先怀疑。判断方法不是看用户浏览器里是否正常,而是看抓取端拿到的初始 HTML 是否包含目标内容。若初始 HTML 只有空容器,正文、分页数据或详情字段都靠脚本填充,那么断点就在渲染层。
此时可做的动作是:为关键深层内容提供可抓取的静态或服务端输出,或者在入口页保留指向深层的普通链接。执行后,再观察抓取日志中该路径的请求是否出现、状态码是否稳定。若请求出现且状态正常,说明断点已被绕过;若仍无请求,则要回到允许层和发现层继续排查。不同搜索引擎对脚本渲染的支持情况不同,需要分别核查,不能用一个引擎的表现推断另一个。
找到第一处异常后,先只修复这一处,并保留修复前的状态作为对照。假设断点在入口页链接由脚本生成,那么先给入口页加上普通链接,再观察深层路径是否被重新发现。不要同时改 robots.txt、站点地图和链接结构,否则即使请求恢复,也无法判断是哪项改动起了作用。
站点地图不保证收录,它只是发现线索之一。把深层 URL 放进站点地图,不能替代可抓取链接和正常响应。验证时应以实际请求记录和状态码为准,而不是以提交动作完成为准。若修复后深层请求仍缺失,下一步应检查该路径是否被更具体的规则拦截,或是否在跳转链中丢失。
整个定位过程的关键是:把入口正常当作起点而不是结论,按发现、允许、响应、渲染的顺序逐层收窄,直到找到第一处可复现的异常,再用最小改动验证它是否就是断点。