robots.txt 是一个位于网站根目录的纯文本文件,用来告知搜索引擎的抓取程序哪些页面可以收录、哪些链接应当回避。它虽然不能替代安全防护,但能有效控制蜘蛛访问范围,节省抓取额度并减轻服务器压力。学会正确配置它,是站点运营者绕不开的一课。
该文件的写法规律性强,不过是几个固定指令的组合。弄懂下面三个关键概念,绝大部分配置需求都能迎刃而解。
容易出现的错误:每个 User-agent 分组里至少要包含一条 Disallow 或 Allow 语句,否则该分组会被直接忽略。另外要清楚,这个文件只对搜索爬虫起作用,普通用户用浏览器直接访问那些地址仍然可见,敏感数据不能指望它来保护。
无论站点规模大小,都可以从一个稳妥的基础版本起步。以下这份初始配置可直接拿来当模板使用。
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Sitemap: https://www.yourdomain.com/sitemap.xml
确认与易错点:上传完成后,在浏览器地址栏输入 你的域名/robots.txt,如果页面能原样显示文件内容,就说明部署成功了。新手最常见的失误是写成 Disallow: /,这样等于把整个网站从搜索结果里彻底移除。同时需要注意路径结尾的斜杠,例如 /tmp 并不能拦截 /tmp/ 目录下的内容。
当网站目录变得复杂,单纯的封锁或放行往往不够用,Allow 指令的价值就体现出来了。一个典型的场景是:想屏蔽整个图片资源库,但保留其中一张品牌宣传图供搜索引擎收录。
User-agent: *
Disallow: /assets/img/
Allow: /assets/img/brand.png
匹配规则说明:在同一个分组内,路径较长的规则拥有更高的优先级。所以上面这段配置中,/assets/img/brand.png 的放行指令会覆盖较短的目录级封锁指令。这种由长到短的匹配逻辑,让精细化管理成为可能。
除了一对一的路径匹配,robots.txt 标准还支持星号通配符,用来表达模糊匹配需求。例如 Disallow: /*.php$ 可以拦截所有以 .php 结尾的动态页面地址,Disallow: /page? 也能用来限制带特定查询参数的链接。
避坑提醒:通配符并非所有搜索引擎都完全支持,在书写时考虑兼容性,优先使用明确的路径规则。配置修改后,建议用百度搜索资源平台或 Google Search Console 的机器人测试工具验证效果,查看哪些 URL 被拦截,避免误伤正常页面。
不能直接阻止。robots.txt 只是发出访问请求,部分合规的爬虫会遵守规则不抓取,但被屏蔽的 URL 仍可能以"无标题"等形式出现在搜索结果里。想真正阻断收录,需要配合使用 noindex 标签。
没有固定时间。搜索引擎会定期重新抓取该文件,快则几分钟,慢则几天。改完后耐心观察,也可以主动在站长工具里提交该文件请求更新。
需要的。robots.txt 只对放置它的那个域名生效,不同域名各自独立。如果主站和子域名都开放抓取,每个域名根目录都得单独部署一份,规则视情况分别设置。
robots.txt 的配置并不复杂,但细节决定效果。建议从一份保守的基础规则开始,逐步针对站点实际结构添加 Allow 和 Disallow 指令,每次修改后都通过搜索引擎的官方工具进行测试,确认没有误拦截再上线。同时定期回顾这份文件,在网站改版或目录调整时同步更新,让爬虫始终按你的预期工作。