robots.txt 是放在站点根目录的纯文本文件,用来告诉搜索蜘蛛哪些路径可以抓、哪些不建议抓。它不负责把页面从索引里移除,也不保证蜘蛛一定不访问,但在 URL 发现环节,它确实是最先被读取的规则之一。很多站点运营中的“URL 发现慢”“重要页面不被抓”,追查到最后,不一定是内容问题,而是 robots 规则写得太宽、太窄,或者长期没有维护。
先分清抓取与索引
Disallow 是抓取层面的指令,不是索引移除手段。一个 URL 被 robots.txt 屏蔽后,如果外部仍有链接指向它,它依然可能出现在搜索结果里,只是蜘蛛无法读取内容。因此,站点运营中不要用 robots.txt 来管理已收录页面的展示状态。需要控制索引时,应优先考虑页面级别的 meta robots 或 HTTP 头。
常见规则误伤
- 用 Disallow: /*? 一刀切屏蔽所有带参数的 URL,结果把分页、筛选、追踪参数之外的正常链接也挡在外面。
- 只写 Disallow: / 而忘记后续放行,整站抓取入口被关闭。
- 把后台路径写进 robots.txt 当作安全措施。它只是降低被发现概率,不能替代登录鉴权。
- 忽略路径大小写与目录匹配差异,比如 /Admin 与 /admin 在某些服务器上被视为不同路径。
- Allow 与 Disallow 同时存在时优先级理解错误。通常最长匹配优先,长度相同时 Allow 优先。
通配符与结尾匹配
常见的两个符号是 * 和 $。* 匹配任意字符,$ 匹配 URL 结尾。例如 Disallow: /*.pdf$ 只屏蔽以 .pdf 结尾的链接,而不是所有包含 .pdf 的路径。不同搜索蜘蛛对通配符的支持程度有细微差异,使用前建议用平台提供的测试工具验证,不要凭经验假设所有蜘蛛行为一致。
URL发现的三层配合
robots.txt 管抓取入口,站点地图管提交,内链管发现路径。三者需要保持一致:站点地图里提交的 URL 不应被 robots 屏蔽;被屏蔽的 URL 不宜大量出现在内链中,否则会占用抓取配额;重要栏目页和内容页不应被误伤。站点运营中常见的矛盾是,一边在内链中大量指向筛选页,一边又用 robots 屏蔽筛选页,蜘蛛反复进入又被拒绝,效率自然下降。
一个可操作的检查流程
- 列出 robots.txt 当前规则,按路径分组,标注每条规则的意图。
- 用搜索资源平台的 robots 测试工具,逐条验证栏目页、内容页、分页、筛选页等典型 URL。
- 对比服务器日志中蜘蛛的抓取路径,观察是否存在大量被屏蔽目录的访问或频繁 404。
- 检查站点地图与内链,确认重要 URL 均可抓取且路径一致。
- 调整规则后观察一段时间,不要频繁改动。robots.txt 的变更会影响抓取节奏,短期内不宜反复。
蜘蛛池解决的是入口数量,robots.txt 解决的是抓取边界。边界不清楚,入口越多,浪费的抓取也越多。
最后,robots.txt 是公开文件,不要在其中暴露敏感路径。规则宜少而明确,能用 Allow 放行的尽量少用 Disallow 封堵。站点运营的 URL 发现,最终还是要回到内容质量、站点结构与内链设计本身,robots.txt 只是把门开对位置。