robots.txt 是位于网站根目录的纯文本文件,它的作用是告诉搜索引擎爬虫哪些页面可以抓取,哪些页面应当避开。配置合理的 robots.txt 可以防止后台页面、临时目录被收录,同时让爬虫的抓取资源集中在真正有质量的内容上。但如果设置不当,反而可能导致页面迟迟不被收录,甚至整个站点在搜索结果中消失。下面这份指南,从文件如何新建、指令怎么写,到容易出错的细节,给出明确的参考。
文件名必须是全小写的英文字母,且只能放在网站根目录下,例如 www.example.com/robots.txt。文件内部通常由多个规则块组成,块与块之间留有空行以便阅读。每一个规则块都要先通过 User-agent 指明这一组规则适用于哪一个爬虫,其后才是对应的 Disallow 或 Allow 指令。
每行指令的格式固定为“字段名: 值”,像 Disallow: /tmp/ 这样。字段名的英文字母大小写皆可,但路径部分必须区分大小写。文件中还能使用 # 来添加注释,注释既可以单独占用一行,也能放在指令末尾,用来记录该规则是出于什么原因添加的,方便日后维护。
需要注意的是,一个 User-agent 之后可以接连写多条 Disallow 和 Allow,它们共同组成一组规则。虽然大多数主流搜索引擎在路径匹配更具体时会让 Allow 覆盖 Disallow,但不同爬虫对优先级的判断存在差异,所以面向不同搜索引擎的规则,需要分别验证效果。
如果想让所有搜索引擎都放弃抓取整个网站,用星号作为匹配对象即可:
User-agent: *
Disallow: /
当只要屏蔽管理后台或者临时文件夹时,可以逐条写上这些路径:
User-agent: *
Disallow: /admin/
Disallow: /temp/
这里有一个极易踩的坑:目录末尾的斜杠并不是装饰。写成 /admin/ 只匹配 admin 目录及其下属页面;若漏掉末尾斜杠写成 /admin,则所有以 admin 开头的地址都会被命中,比如 /administrator 或 /admin-panel,这些原本正常的页面也会被错误屏蔽,导致收录范围意外缩小。
当需要屏蔽整个目录,却想保留其中某个子栏目时,必须同时使用 Disallow 和 Allow。举例来说,只开放博客下的专题页面,其余博客内容全部屏蔽:
User-agent: *
Disallow: /blog/
Allow: /blog/featured/
匹配生效遵循一条通用规则:当两条规则匹配到的路径长度相同时,Allow 的优先级高于 Disallow;若路径长度不同,则更长、更具体的一方优先。因而上面这一组配置,可以让 /blog/featured/ 正常被抓取,其他博客页面继续保持屏蔽。
不同爬虫对指令的解析方式并不完全一样。例如,部分爬虫对 Disallow 后空值的理解是允许抓取全部内容,有的爬虫则可能忽略这种写法。如果站点需要兼顾多家搜索引擎,不要只写一套规则就认为万事大吉,应当针对主要目标引擎分别配置规则块,并借助搜索引擎站长平台的抓取测试工具逐一核实结果。
默认允许与默认拒绝的边界常常让人困惑。当一个组内只有 User-agent 而没有列出任何 Disallow 时,表示该爬虫可以抓取站内所有内容;而单独写 Disallow: / 则代表完全拒绝。两者的区别必须记清楚,避免因为误删一行指令导致整站被拒。
另一个常见问题是给文件添加了 BOM 头。用某些编辑器保存 robots.txt 时,文件开头可能被插入看不见的字节顺序标记,这会导致第一行 User-agent 解析失败,爬虫可能因此忽略整个文件。建议用纯文本编辑器保存为 UTF-8 无 BOM 格式,并在写完文件后打开检查首行是否正常。
文件写完后,不要直接上线就结束。先用浏览器访问根目录下的 robots.txt 地址,确认内容能正常显示并且没有乱码;随后到各搜索引擎的站长工具中提交文件并触发抓取测试,观察实际抓取结果是否与预期一致。每当站点改版或目录结构调整时,同步复查 robots.txt 的每一行规则,及时删除不再使用的路径,防止过时规则造成页面误屏蔽。
在文件顶部添加一个规则块,写 User-agent: * 和 Disallow: / 即可。等维护完成后,把这两行内容删除或注释掉,爬虫就会恢复抓取。注意这只能阻止新的抓取请求,已被收录的页面不会立即从搜索索引中消失。
没有固定的生效时间。通常爬虫会定期重新读取该文件,快则几小时,慢则数天。想加快速度,可以在搜索引擎站长平台手动提交 robots.txt 并触发抓取。若长时间未生效,应检查文件是否放置正确、内容是否有语法错误。
可以。在文件末尾单独添加一行 Sitemap: https://www.example.com/sitemap.xml,这能帮助爬虫更快发现站点地图,从而更高效地抓取页面。该指令不属于任何规则块,通常放在文件最后。
编写 robots.txt 的核心思路并不复杂:先明确想要屏蔽的对象,再逐条写好路径,并留意斜杠的有无、规则之间的优先级这些容易犯错的细节。上线前务必用站长工具验证一遍,并养成在站点结构变动时复查文件的习惯。一个严谨的 robots.txt 既能保护好不该被收录的页面,也能让搜索引擎更顺畅地发现你真正希望展示的内容。