要判断百度不收录的原因,日志里最该优先核对的是百度蜘蛛的请求记录,具体包括:抓取时间、请求URL、HTTP状态码、User-Agent、响应大小、返回字节数、来源IP,以及服务端处理耗时。其中状态码和响应大小是最快能定位问题的两项:状态码决定百度是否成功拿到页面,响应大小决定拿到的内容是否完整。日志里如果根本没有百度蜘蛛的记录,问题在抓取入口;如果有记录但状态码异常或内容为空,问题在服务端响应。
第一步不是看字段值,而是确认百度蜘蛛是否来过。在访问日志中筛选User-Agent包含Baiduspider的记录,同时核对来源IP是否属于百度公布的蜘蛛IP段。只凭User-Agent不够,因为UA可以被伪造,IP和UA对得上才说明是真实抓取。
状态码是日志里信息量最大的字段,它直接说明百度每次抓取的结果。常见取值和处理方向如下:
200:抓取成功。此时要接着看响应大小,如果200但字节数很小,可能是返回了空模板或验证页,百度拿不到正文。301/302:发生了跳转。核对跳转目标是否可达、是否形成跳转链或循环。跳转链过长会消耗抓取配额。403/401:被拒绝访问。检查防火墙、CDN、访问频率限制是否误伤了百度IP。404:页面不存在。确认是URL本身失效,还是伪静态规则、路由配置写错导致正常页面返回404。429/503:限流或服务不可用。检查是否有请求频率限制、后端是否过载。5xx:服务端错误。需要结合服务端错误日志定位是程序异常还是数据库、缓存故障。判断原则:如果同一URL反复出现非200状态码,百度会降低抓取频率,收录自然停滞。此时应先修复状态码,再谈内容优化。
状态码为200并不代表抓取有效。日志中的响应字节数能反映百度实际拿到了多少内容:
抓取频次也要看趋势。把日志按天统计百度蜘蛛的请求总数和独立URL数:请求数下降通常意味着抓取配额被压缩,独立URL数长期不增长则说明新页面没有被发现。这两项要分开看,请求数高但集中在少数URL,说明抓取预算浪费在低价值页面上。
时间和人手有限时,按下面的顺序处理,能在最短时间内排除最大面积的问题:
验收标准可以这样定:修复后观察日志中目标URL的状态码是否稳定为200、响应字节数是否与页面实际体积接近、百度蜘蛛对该目录的抓取频次是否回升。注意,robots.txt解除限制不等于页面会被立即重新抓取,站点地图提交也不保证收录,这些只能作为辅助手段。
日志里出现百度蜘蛛,不代表页面一定会被收录。抓取和索引是两件事,日志只能证明百度来过,不能证明百度已收录。反过来,日志里没有记录也不一定是被封禁,可能是该页面从未被外链或内链指向,百度根本不知道它的存在。
另外,HTTPS并不等于安全无漏洞,也不直接带来排名提升;它只是抓取和索引的基础条件之一。如果日志显示百度蜘蛛能正常抓取HTTPS页面,就不必把不收录归因到协议上。
下一步建议:从日志中导出最近30天百度蜘蛛的状态码分布,先修占比最高的异常状态码,修复后持续观察同一批URL的抓取记录变化。