把测试环境和线上环境放进同一个网站收录查询工具里对照,关键不是比较两边“收录数量”谁多谁少,而是先确认两边返回给爬虫的内容是否一致,再用同一批URL分别查询,逐项核对差异来自哪里。测试环境通常有访问限制、robots.txt屏蔽或域名不同,直接查收录往往得到零结果,这种零结果不能说明线上有问题。
测试环境与线上环境的差异,很多时候来自查询条件本身不统一。开始之前先把下面几项固定下来,否则后面的对比没有意义。
/product/1001这种相对路径,而不是一个用测试域名、一个用线上域名后直接比总数。site:前缀,或都用工具里的“URL是否被收录”单项检查。noindex,那么它不被收录是预期行为,不是故障。这一步的判断题很简单:如果测试环境从设计上就禁止被抓取,那么两边收录数量不可比,只能比页面内容和技术配置。
准备一份10到50条的代表性URL清单,覆盖首页、栏目页、详情页和最近改过的页面。对每条URL,在网站收录查询工具里分别查测试环境和线上环境,把结果记成三列:URL、测试环境状态、线上环境状态。状态可以粗略分为“已收录”“未收录”“被屏蔽”“返回异常状态码”几类。
对照时重点看三种情况。第一种,线上已收录、测试未收录,通常是测试环境的抓取限制造成的,属于正常。第二种,两边都未收录,需要检查页面本身是否可抓取、是否有内容、是否被noindex标记。第三种,测试环境出现了线上没有的页面被收录,这往往意味着测试环境曾经对外开放过,需要尽快处理,避免重复内容或信息泄露。
这里要区分“可能原因”和“已经定位的原因”。看到测试环境未收录,可能的原因有robots.txt限制、登录保护、服务器返回403、页面含noindex,也可能是爬虫还没抓到。只有逐项排查后确认的那一条,才算已定位的原因。
收录状态只是一个结果,真正决定两边是否一致的是返回给爬虫的HTML。对同一条URL,分别抓取测试环境和线上环境返回的HTML源码,对比以下几项:
<meta name="robots" content="noindex">,测试环境有而线上没有是正常的,反过来则要警惕。Disallow: /整站屏蔽,这能阻止抓取,但不等于能可靠地把已经收录的页面移除。需要提醒的是,robots.txt的抓取限制不等于可靠的索引移除,站点地图也不保证收录。测试环境用robots.txt挡住爬虫,只能减少被抓取的机会,已经进入索引的测试URL仍需用其他方式处理。
找到差异后,用一次小范围复测来验证判断是否正确。例如怀疑测试环境未收录是因为整站noindex,就先在测试环境去掉该标记,再对同一条URL重新查询;如果状态发生变化,说明判断成立。如果复测后状态不变,说明还有别的因素,需要回到上一步继续排查。
验证时注意,不同搜索引擎的收录情况要分别核查,一个引擎的结果不能直接套用到另一个。查询工具如果只覆盖某一个引擎,对照结论也只对这个引擎成立。
维护阶段建议固定一个检查节奏:每次线上发布重要页面改动后,把对应URL加入清单,同时查测试环境和线上环境,确认测试环境的限制仍然有效、线上环境的收录状态没有异常回落。清单本身不需要很长,关键是每次用同一套条件和同一批URL,这样前后结果才有可比性。
下一步,先选出5条最近改动过的URL,按上面的三列格式各查一次测试环境和线上环境,把结果并排写下来,再决定是处理测试环境的抓取限制,还是处理线上页面的收录问题。