收录网站时,服务器日志里最该优先核对的是:请求时间、客户端 IP、User-Agent、请求方法、完整 URL、HTTP 状态码、响应字节数、Referer,以及(如果有)抓取耗时。判断一个 URL 为什么没被收录,核心不是看“有没有来过”,而是看“来的是谁、要了什么、拿到了什么、之后有没有再回来”。下面用一个假设例子说明怎么把这些字段串起来定位原因。
假设你有一个栏目页 /guide/,在站点地图里提交了两周,搜索端始终显示未收录。你从日志里筛出所有包含 /guide/ 的记录,得到下面几类现象(以下为假设数据,用于说明方法,不是真实项目结果):
200,User-Agent 是普通浏览器,Referer 是站内其他页面。200,User-Agent 是搜索引擎抓取程序,但响应字节数明显小于正常页面。302,Location 指向带参数的另一个地址。403,同一 IP 段反复出现。这四类记录指向的原因完全不同:A 只说明有用户访问,不能证明抓取程序来过;B 可能是抓取程序拿到了不完整内容,也可能只是它请求的是某个接口或分页;C 说明发生了跳转,最终地址是否可抓取需要继续追;D 说明请求被拒绝,可能是防护规则、权限配置或频控导致。只看到“有记录”就下结论,是最常见的错误。
请求时间:用来判断抓取频率、是否集中在某一时段,以及和内容更新时间是否对得上。如果页面更新后抓取程序长时间没再来,问题可能在发现机制,而不是页面本身。
客户端 IP 与 User-Agent:两者要一起看。User-Agent 可以被伪造,单看它可能把普通程序误判为搜索引擎抓取。可核对的方式是:用该搜索引擎官方公布的验证方法(例如反向 DNS 查询或官方 IP 段列表)确认来源,而不是只看字符串里有没有品牌名。不同搜索引擎的验证方式不同,需要分别核查。
请求方法与完整 URL:确认抓取的是 GET 还是 HEAD,以及是否带上了 ? 参数、# 片段或大小写差异。带参数的 URL 和规范 URL 可能返回不同内容,日志里必须按完整路径统计,不能只按目录名归并。
HTTP 状态码:这是定位问题的第一分叉。200 表示返回了内容;301/302 表示跳转,要追最终地址;403/401 表示被拒绝;404 表示地址不存在;5xx 表示服务端出错。注意:robots.txt 的抓取限制不等于可靠的索引移除,日志里看到抓取程序遵守限制而没来,只能说明它被限制,不能说明页面已被移除。
响应字节数:用来发现“状态码正常但内容异常”。如果同一个 URL 平时返回 80KB,某次只有 2KB,可能返回了错误页、空模板或被拦截页。这个字段要和状态码配合看,不能单独下结论。
Referer:帮助判断抓取程序是从哪个页面发现这个 URL 的。如果所有抓取都来自站点地图而没有任何站内链接来源,说明内链发现路径可能偏弱;但这只是可能原因之一,不等于已经定位。
抓取耗时:如果日志里有响应时间字段,可以判断是否因超时导致抓取中断。耗时高可能是服务端慢、第三方资源阻塞或单次请求过大,需要结合其他字段排除。
200、3xx、4xx、5xx 各占多少,先看有没有非 200 的异常。200 的记录,比较响应字节数与页面正常大小,找出明显偏小的请求。200。如果抓取程序从未出现,优先检查发现路径:内链、站点地图、外链,以及 robots.txt 是否误拦。站点地图不保证收录,它只提供发现线索。
如果抓取程序来过但状态码异常,优先修复服务端或跳转配置,再观察后续抓取。此时不要急着改内容。
如果抓取正常、状态码 200、字节数正常,但页面仍不收录,问题可能在于内容质量、重复度或该搜索引擎的索引策略,需要结合页面本身和同站其他页面对比,而不是继续在日志里找。HTTPS 不保证安全无漏洞或排名,它只是传输层配置,不能作为收录的充分条件。
下一步:选一个你关心但未收录的 URL,按上面的字段导出最近 30 天日志,先确认抓取程序是否真的来过、拿到的是不是完整页面,再决定改发现路径、改服务端还是改内容。