写 robots.txt 时,最常见的误操作来自把“禁止抓取”当成“从搜索结果删除”,或者把通配符、目录路径和大小写规则想当然。正确做法是:先明确要阻止哪一类爬虫访问哪些路径,再写规则,最后用具体 URL 验证,而不是凭感觉加一行 Disallow。
robots.txt 控制的是爬虫能否抓取,不是命令搜索引擎移除已经收录的页面。如果页面已经被收录,仅加 Disallow 往往无法让它从结果中消失,因为爬虫可能不再抓取,但旧索引仍可能保留。要移除索引,应使用对应的移除工具或让页面返回 noindex,且要确保爬虫仍能抓到该页面才能看到 noindex。
另一个起点误解是认为 robots.txt 对所有搜索引擎行为完全一致。不同搜索引擎对通配符、$ 结尾、Allow 与 Disallow 冲突时的处理需要分别核查。写之前先列出:要阻止的爬虫名称、要阻止的目录、是否允许子路径例外。
常见错误包括:把完整网址写进 Disallow,例如写成 Disallow: https://example.com/private/,而正确形式通常是路径 Disallow: /private/;忘记目录末尾斜杠,导致 /private 可能同时匹配到 /private-page;误以为 * 可以放在任意位置表达任意内容。通配符支持情况要按目标搜索引擎文档核查。
下面是一个假设示例,仅用于说明结构,不冒充真实站点配置:
User-agent: *<br>Disallow: /tmp/<br>Allow: /tmp/public/<br>Disallow: /*.pdf$
这段规则的意思是:所有爬虫禁止访问 /tmp/,但允许 /tmp/public/,并禁止以 .pdf 结尾的 URL。是否生效取决于目标搜索引擎是否支持 Allow、* 和 $。如果站点有多个爬虫规则,爬虫通常只选取最匹配自己名称的一组,而不是把所有组叠加。
写完后要实际验证三类检查项:
Disallow: / 后又忘记删除,这是最典型的误操作。如果发现页面仍出现在搜索结果中,先判断是“仍被允许抓取但未更新”,还是“已被禁止抓取但索引未移除”。两者处理方式不同,不能只反复改 robots.txt。
站点地图不保证收录,HTTPS 也不保证安全无漏洞或排名。robots.txt 只解决抓取范围问题。维护时要定期检查:新上线的目录是否被旧规则误封、测试环境是否被意外允许抓取、规则是否引用了已经不存在的路径。每次改完保留变更记录,并在一段时间后复查抓取统计和索引状态。
下一步:选一个你真正想阻止的目录,写一条最小规则,用具体 URL 做一次允许/禁止验证,再决定是否扩大规则范围。