robots.txt 是放在网站根目录的纯文本协议文件,用来告诉搜索引擎爬虫哪些内容可以抓取、哪些内容需要略过。合理配置能有效节省抓取配额、保护敏感区域,但稍有不慎,一条错误规则就可能让整站内容从搜索结果中消失。接下来我们系统梳理它的语法、匹配逻辑与常见误区。
robots.txt 本质上是站长与爬虫之间的一份公开约定,主流搜索引擎大多尊重其中指令,但这并非强制命令,也不构成真正的安全防护。访问者通过浏览器就能直接查看到文件内容,因此任何涉及隐私、后台登录或内部数据的路径,都不能指望靠它隐藏。
实际运营中,它主要发挥三个作用。其一,封锁后台管理、测试环境或临时页面等不需要被收录的目录;其二,屏蔽带有大量跟踪参数的动态网址,避免爬虫资源被白白消耗;其三,在文件内声明 Sitemap 地址,引导爬虫更快发现新发布的内容。
需要注意的是,若包含敏感信息的路径出现在 robots.txt 中,反而等于向所有人指路。这类资源必须结合登录验证、IP 白名单等硬性手段来保护。
robots.txt 以“字段: 值”的格式逐行书写,字段名不分大小写,但值中的路径部分区分大小写。熟悉下面五个核心字段,就能应对绝大多数配置需求。
假设站点有一个内部目录 /manage/,其中 /manage/notice.html 需要正常被收录,同时希望提供站点地图,可参考下面写法:
User-agent: *
Disallow: /manage/
Allow: /manage/notice.html
Sitemap: https://www.example.com/sitemap.xml
这段规则表达了三层意图:默认拦截 manage 目录下所有内容;特例放行 notice.html 页面;同时告知爬虫 Sitemap 的具体位置。需要注意,Allow 规则必须写在对应 Disallow 之后才生效。
写 robots.txt 本身不难,难在匹配顺序的细微差别容易误伤正常页面。掌握规范步骤,才能避开暗坑。
爬虫通常按规则组从上到下匹配,匹配到最长的路径即为最终结果。例如 Disallow: /a 与 Allow: /a/b,爬虫访问 /a/b/c 时必然优先选择更长的 /a/b 规则。若找不到精确匹配,则默认允许抓取。
避坑建议:不要在根域名与子域名之间混用规则;不要轻易使用 Disallow: / 来封禁全部内容,除非站点确实暂未上线;修改规则后务必观察抓取报告,确认新页面能正常入库,再删除旧的拦截配置。
实践中,许多站点因低级失误而吞下苦果。最常见的错误包括:在文件中出现中文注释或多余空格,导致部分爬虫解析异常;将私有路径写在 Disallow 中,反而暴露了敏感结构;忘记了 Sitemap 需要完整 URL 而非相对路径;更换服务器后未同步保留原文件,造成整站封禁。
判断文件是否生效,可以借助搜索引擎站长平台的抓取测试工具。若出现疑似异常,先用浏览器直接访问 robots.txt 确认文件可读,再逐一检查每条规则是否有拼写错误。一个实用经验是:任何规则上线前,先在测试环境模拟爬虫验证再全量发布,能大幅降低误伤风险。
不能。它只是请求爬虫不抓取,并不能阻止其他网站引用或复制你的内容,也不能防止恶意爬虫无视规则。如需彻底移除已收录页面,应在站点后台配合使用 noindex 标签或删除页面本身。
以井号(#)开头的注释行会被正常忽略,空行则用于分隔不同规则组。但需要注意,字段值与 # 之间不要夹杂多余字符,且注释应避免使用中文全角符号,以免个别爬虫出现误读。
生效时间取决于各搜索引擎的抓取频率,短则数小时,长则数天。在站长平台主动提交或请求抓取可以加速更新。修改后建议及时观察抓取日志,确认新规则已被爬虫读取。
robots.txt 虽是一份简单的文本文件,却直接影响搜索收录效率与站点安全边界。合理做法是:先明确目录分级与抓取优先级,再按字段顺序严谨编写,最后通过工具验证效果。请记住,它只能作为抓取的引导规范,绝不是安全防线。建议每季度复查一次规则,结合站点结构调整及时更新,避免积累无效或冲突配置。