与开发人员交接搜索引擎抓取规则时,最常见的错误是把它当成一个“上线前打开”的开关:开发认为加一行Disallow: /只是测试期临时措施,上线时删掉就行。但抓取规则的实际含义是“允许或禁止爬虫访问”,而不是“控制页面是否出现在搜索结果里”。如果交接时只传一句“记得放开robots”,而没有说清哪些路径要拦、哪些要放、验证方式是什么,就很容易出现测试限制被带上线,或者该拦的接口、参数页被长期放行。
robots.txt 的抓取限制不等于可靠的索引移除。它只表达“请不要抓取这些URL”,并不阻止已经抓取过的内容继续留在搜索结果中,也不阻止其他来源的链接把某个地址暴露出来。因此交接时必须把两类需求分开:
如果开发把“不想被搜到”直接翻译成“robots里禁掉”,结果往往是页面仍可能被索引,只是标题和摘要显示不全。交接时先确认需求属于哪一类,再决定技术手段。
口头说明容易遗漏,建议用一份可执行的交接清单,让开发按项确认:
/search、/*?sort=。避免只写“把测试的都去掉”这种无法验证的描述。/robots.txt看返回内容,确认没有Disallow: /这类全站限制;再用抓取测试工具或日志观察爬虫是否正常请求关键页面。下面是一个假设示例,用于说明交接信息应该长什么样,不是真实项目配置:
需求:禁止抓取站内搜索结果页,允许抓取商品详情页。
路径:/search、/search?q=*
处理:robots.txt 中添加 Disallow: /search
不处理:商品详情页不添加任何抓取限制
验证:上线后访问 /robots.txt,确认无 Disallow: /;用抓取测试请求一个商品详情页,确认返回正常
这份模板的关键是把“做什么”和“不做什么”都写出来。只写禁止项,开发可能顺手把整站禁掉;只写允许项,又可能漏掉参数页的拦截。
交接后如果出现“页面能访问但搜不到”或“不该被抓的页面频繁出现在日志里”,按以下顺序排查:
/robots.txt实际返回内容,确认是否与交接单一致。判断结果时注意:不同搜索引擎对同一份robots.txt的支持细节可能不同,尤其是通配符和参数匹配。如果交接单里用了*或$,要分别核查目标搜索引擎的帮助文档,而不是假设所有爬虫行为一致。
与其每次上线前临时提醒开发,不如把抓取规则检查写成发布流程里的固定一步:修改robots.txt或相关标签时,必须附带交接单并指定验证人。下一次改动前,先翻出上一版交接单,对比实际返回内容是否一致,再决定是否放行。