Robots.txt 是放置于网站根目录的一个纯文本文件,其核心任务是向搜索引擎爬虫传递"哪些路径可访问、哪些内容应略过"的意向。它本质上依赖爬虫自律而生效,并非强制安全屏障,用得好能让抓取更高效,也能明显节省服务器带宽。
每次爬虫造访网站,都会优先查看根目录下是否有 robots.txt。如果该文件缺失,爬虫便依据默认逻辑,将站内所有可公开访问的页面视为允许抓取。
日常运维中,这个文件常用于处理三类需求:隐藏后台登录入口、过滤无索引价值的页面(如站内搜索结果页、自动聚合的标签组)、通过降低抓取频次来减轻服务器瞬时压力。需要特别警惕的是,遵守这套协议的只有主流搜索爬虫,恶意的采集程序根本不会理会这些规则,因此任何情况下都不能把它当作访问控制的防线。
配置内容由若干条记录组合而成,每条记录必须先用 User-agent 说明适用对象,再列出具体指令。理清下面几个关键指令是正确书写的前提:
下面给出简洁明了的参考写法:
User-agent: *
Disallow: /cache/
Disallow: /internal/
Allow: /internal/help.html
Sitemap: https://www.example.com/sitemap.xml
这条配置的意思是:全部爬虫无法访问 cache 目录和 internal 目录,但 internal 下的 help.html 被特别放行,同时提供了站点地图地址。这样的写法便于后续维护时快速理解。
语法本身并不复杂,但实际配置中常因为一些细节没拎清而适得其反。以下几个场景需要格外留意:
另外,文件的编码格式应保持 UTF-8 无 BOM,避免使用中文字符或特殊符号。修改后建议立即用浏览器访问该文件确认内容已正确生效。
配置完毕不等于万事大吉,还需经过一轮严苛的自检。可以使用主流搜索引擎提供的抓取诊断工具,查看爬虫实际看到的文件内容及最近一次抓取状况。
排查时有一个实用技巧:临时借助抓取测试工具,分别模拟屏蔽前后的抓取结果,能直观发现规则是否按预期生效。
不能。它只控制爬虫的抓取行为,页面仍可能因外部链接而被搜索引擎收录。若确实需要全面移除索引,应配合使用 noindex 标签,两者结合才能达到预期。
区别明显。Disallow: /temp 会匹配所有以 temp 开头的路径,比如 /temporary 也可能被影响;而 Disallow: /temp/ 只精准作用于 temp 目录本身及其内部内容,推荐使用后者以避免误伤。
不能合并写在同一行,每条规则的 User-agent 必须独占一行。如需针对不同爬虫设置相同指令,只能分别书写各自的记录,这是较常见的错误写法。
编写 robots.txt 并不难,难在细节把控。建议从最小化原则出发:只限制确有必要的路径,写完后借助诊断工具逐一验证,并定期查看抓取日志确认无异常。合理配置能提升抓取效率,而盲目屏蔽则可能让整站流量受损,谨慎为之。