判断一个 URL 有没有被收录,很多人习惯用 site: 查一下,看到数字就下结论。但只要换一种方法核对,结果往往对不上:site 说没有,覆盖率报告说已编入索引,日志里又明明看到被抓过。这不一定是工具出错,而是三种口径统计的根本不是同一件事。
一、site 查询:方便,但只是估算
site 查询返回的是搜索引擎自己给出的一个近似结果集,它有几个天然限制:
- 结果被去重和折叠。同一模板下高度相似的页面,可能只展示一部分作为代表,剩下的被省略。
- 数字不精确。同一批 URL,换关键词、换时间点查询,数量会变,这不是收录量在剧烈波动。
- 不实时。刚刚发布的页面,site 查询经常要等一段时间才反映出来。
- 受归属影响。多个 URL 内容相近时,查询结果里出现的可能是搜索引擎选定的那个版本,而不是你输入的那一个。
所以 site 查询适合粗判「这个站有没有被索引」,不适合用来确认某一条具体 URL 的状态。
二、覆盖率报告:看的是搜索引擎认定的版本
Search Console 的页面索引报告颗粒度更细,但它也有自己的前提:
- 只覆盖你已验证的资源,子域、目录属性需要单独验证;
- 数据有延迟,通常不是当天状态;
- 报告里的 URL 是经过 canonical 归并之后的代表 URL,原始 URL 可能被折叠进去,不会单独出现;
- 「已发现但尚未编入索引」和「已抓取但尚未编入索引」是两种不同状态,前者说明还没抓,后者说明抓了但没进索引。
换句话说,覆盖率报告回答的是「搜索引擎怎么归类这条 URL」,而不是「这条 URL 现在能不能搜到」。
三、服务器日志:只能证明被抓取
日志是最硬的证据,但它证明的事情很容易被误读:
- Googlebot 访问并拿到 200,只说明抓取成功,不代表已经编入索引;
- 反过来,日志里没有记录,也不一定是没抓,可能是被 CDN、缓存层或日志采样吃掉了;
- 日志能帮你看到抓取频次、状态码、抓取的是哪个 URL 变体,这些信息对排查很有用,但不能单独用来判定收录。
四、直接搜索:最接近用户视角
用一个页面上独有的字符串(例如一句独特的标题或一串编号)去搜,是判断「能不能被搜到」最直接的方式。注意几点:
- 去掉个性化、登录状态和地区影响,最好用无痕窗口;
- 搜索引擎会自动省略与已有结果高度相似的条目,搜不到不代表没索引;
- 页面被索引但排名很低时,需要翻到很后面才能看到,这属于展现问题,不是收录问题。
五、一个从粗到细的对照流程
- 先用唯一字符串搜索,确认这条 URL 是否可被搜到,记录观察到的时间点。
- 再用 site 查询看整体规模,只关注数量级和趋势,不要纠结具体数字。
- 打开覆盖率报告,看这条 URL 落在哪个状态,注意它是否被显示为自己,还是被归并到了别的 URL。
- 翻日志,确认最近的抓取时间、状态码和抓取的 URL 形态,判断是抓取问题还是索引问题。
- 等待一个合理周期后再复查,新页面的状态变化本来就需要时间,频繁改动反而会干扰判断。
六、几种常见的误判
- 把 site 数字当成收录总数,据此判断站点「掉了多少收录」。
- 看到日志有抓取记录,就认为收录已经完成,不再处理页面质量问题。
- 覆盖率报告显示「已发现但尚未编入索引」,就急着改标题、改内容,其实更该先检查内链和入口。
- 用带参数的 URL 去查询,结果被归并到规范版本,于是误以为页面没被收录。
把三种口径当成互相验证的工具,而不是互相否定的证据:日志回答「来没来过」,覆盖率报告回答「怎么归类」,直接搜索回答「用户能不能找到」。
排查时先明确自己想知道的是哪一个问题,再选对应的口径,比盯着一个数字反复刷新要有效得多。