搜索引擎爬虫访问一个网站时,往往不会直接抓取网页内容,而是先请求根目录下的 robots.txt 文件。这个纯文本文件好比一份“访问协议”,规定了哪些路径对爬虫开放、哪些路径需要回避。一份合理的 robots.txt 不仅能防止后台和敏感数据被搜录,还能降低无效请求对服务器带宽的占用,使爬虫把精力集中在真正有价值的页面上。
robots.txt 必须保存在站点根目录,比如 https://yourdomain.com/robots.txt。文件必须使用 UTF-8 编码,每行一条指令,并且路径部分对大小写敏感。一个标准文件通常包含以下几类内容:
此外,你还可以在文件中加入一行 Sitemap 声明,告知爬虫站点地图的存放地址。以下是实际中常见的一种写法:
User-agent: *
Disallow: /private/
Allow: /private/shared/
Sitemap: https://yourdomain.com/sitemap.xml
这段配置表示:所有爬虫可以访问全站,但 /private/ 目录被排除,其中 /private/shared/ 这一个子目录又被单独放行。需要注意,Allow 指令并非通用标准。若某个爬虫无法识别 Allow,它会继续遵守 Disallow 的设定,导致你想局部开放的目录依然不可见。
根据网站运营目标的不同,robots.txt 的写法差异很大。这里整理了三种最常见的场景,你可以按需调整。
如果你的站点以内容为主,或者刚刚上线希望尽快被收录,通常愿意让所有页面进入索引。此时只需要写一个空的 Disallow:
User-agent: *
Disallow:
也可以完全省略 Disallow 这一行,两者效果相同。这里最容易出错的写法是 Disallow: /。一旦这样设置,任何爬虫都无法访问全站,收录就完全中断了。配置完成后,务必检查冒号后面是否留有空格或多余字符。
如果不想让某个搜索引擎抓取你的站点,可以为该爬虫单独编写规则,同时不影响其他搜索蜘蛛的正常访问:
User-agent: Baiduspider
Disallow: /
这样设置后,Baiduspider 会被彻底拒绝,而 Googlebot、Bingbot 等其他爬虫的访问并不受影响。此种写法适用于屏蔽特定来源的请求,比如防止某些抓取频率异常的爬虫占用服务器资源,也可以用来对某个搜索引擎实行临时或永久性的访问限制。
有些网站需要向爬虫开放部分栏目,同时隐藏其他内容。例如只希望公开文章页面,而后台、用户中心或临时目录都不被收录,可以参考如下组合:
User-agent: *
Allow: /article/
Disallow: /
这里要注意有个微妙之处:多数搜索引擎会优先遵循 Allow 规则,因此在 Disallow: / 的前提下,/article/ 依然可以被抓取。但为了避免歧义,更稳妥的做法是只写 Disallow 列表,不依赖 Allow 的优先级逻辑。比如把允许的路径写清楚,然后逐项禁止你不希望公开的目录。
robots.txt 配置看似简单,实际使用中不少人会掉进一些隐蔽的坑里。以下几条最值得关注:
写好 robots.txt 只是第一步,上线之前最好做一次完整的验证。常用的做法是直接在浏览器中打开你的域名下的 robots.txt 地址,检查格式是否规范、路径是否正确。也可以利用各搜索引擎站长平台自带的“抓取测试”工具,模拟爬虫视角查看哪些路径被允许、哪些被拒绝。
在修改配置时,建议先备份原文件内容,避免误操作后无法恢复。每次更新规则后,间隔数小时再观察爬虫的抓取日志,确认请求频率和抓取范围是否符合预期。如果发现页面收录量明显下降,优先排查最近一次 robots.txt 改动是否引入了过宽的屏蔽。
并没有一个统一的普适标准。Google 官方声明在 Googlebot 中,Allow 的匹配长度若大于 Disallow,则 Allow 生效;但其他搜索引擎的处理方式可能不同,因此不建议依赖两者并存的优先级判断,尽量精简规则。
robots.txt 只能约束遵守协议的爬虫,并非强制措施。恶意爬虫或某些非标准机器人可能无视规则直接抓取。如果要彻底保护隐私内容,更可靠的方式是配合页面本身的密码验证或 noindex 标签,而不能单独依赖 robots.txt。
没有固定的时间表。大多数搜索引擎会定期重新抓取 robots.txt,可能会在数小时到数天内自动更新;你也可以通过搜索引擎站长平台手动提交,以加速生效。如果修改后迟迟未生效,可以检查文件是否有缓存或内容格式问题。
robots.txt 是站点与搜索引擎之间的基础沟通工具,配置得当可以显著提升抓取效率,配置失误则可能造成收录异常。建议你从上手时就用最简明的规则起步,避免复杂的 Allow 和 Disallow 叠加;改完之后通过站长工具做抓取测试,并持续观察日志数据。记住一句话:能少写就少写,让规则越简单越不容易出错。