爬虫访问任何网站,首先会去根目录寻找一个特定的文本文件,它就是 robots.txt。这个文件扮演着"网络守门人"的角色,通过简单的指令告诉搜索引擎哪些页面欢迎抓取、哪些区域需要止步。合理配置这一文件,不仅能保护后台数据与未完成页面的隐私,还能帮助搜索引擎把有限的抓取配额集中在你的优质内容上,提升网站的收录效率。
robots.txt 必须存放在网站根目录下(如 yourdomain.com/robots.txt),以 UTF-8 编码保存,每个指令单独成行,路径对大小写敏感。虽然文件内容简单,但每个字段都有其特定职责。
一个常规配置示例如下:
User-agent: *
Disallow: /temp/
Allow: /temp/public/
Sitemap: https://yourdomain.com/sitemap.xml
这个例子的含义是:允许所有爬虫访问,默认禁止 /temp/ 整个目录,但允许其中 /public/ 子目录被抓取。然而,由于并非所有爬虫都支持 Allow 指令,当它们不识别该指令时,更严格的 Disallow 规则就会生效,这一点在实际应用中极易被忽略。
不同网站对搜索引擎的诉求天差地别,照搬网上的模板往往行不通。以下是几种高频场景下的配置逻辑。
对于希望尽快被收录的新站或内容站,通常的做法是让爬虫畅通无阻。配置只需留空 Disallow 的值:
User-agent: *
Disallow:
完全不写 Disallow 行同样可行。但这里是最容易出事故的地方:若误将值写为 /,等于向所有爬虫下达"禁入令",可能导致整站从搜索结果中消失,且难以在短期内恢复。
如果你的网站不想被某个搜索引擎收录,比如出于流量垄断或数据安全考虑,可以精准锁定其爬虫名称:
User-agent: Bingbot
Disallow: /
该规则只影响 Bing 的爬虫,百度和 Google 等爬虫可以照常访问。但在写这类规则之前,必须查阅各搜索引擎的官方文档确认准确的爬虫标识符,否则规则将形同虚设。
最常见的情况是对后台登录、用户中心等动态页面进行屏蔽,避免它们出现在搜索结果中。例如:
User-agent: *
Disallow: /admin/
Disallow: /cart/
Disallow: /login/
这里不建议使用绝对路径(如 https://yourdomain.com/admin/),相对路径的写法兼容性更好且不易出错。此外,杜绝将带有随机参数的 URL 直接写在 Disallow 中,应使用通配符形式(如 /search?*)来统一拦截。
在改动 robots.txt 时,许多人因为不小心的操作而犯下代价高昂的错误。以下问题值得反复检查。
robots.txt 虽然制作简单,但发布前做好验证能避开许多隐患。推荐的检查路径如下:
确认无误后,再同步更新站点地图的位置提示,建议在 Sitemap 行中填写完整网址,并保持该地址始终可访问。
不一定。robots.txt 只能阻止爬虫抓取页面,但若其他网站已经外链了该页面,搜索引擎仍可能通过链接发现它并展示在搜索结果中(只是无法获取正文内容)。如需彻底从搜索结果移除,应结合使用 noindex 元标签或通过站长工具提交删除请求。
规则生效的优先顺序并非简单看谁在前。对于支持 Allow 指令的搜索引擎(如 Google),会在同一 User-agent 分组中按路径长度进行最长匹配,即最具体、最长的路径规则优先于更短的通配符规则。而对于不支持 Allow 的爬虫,则直接遵循 Disallow 的指令。
生效时间没有统一标准。搜索引擎爬虫可能每隔几小时到几天重新读取一次该文件,某些情况下需要手动请求重新抓取。因此,修改后应耐心等待并持续观察,不要频繁改动,以免被搜索引擎视为异常行为。
robots.txt 是网站与搜索引擎之间的第一份沟通文件,配置得当可以保护隐私、提升抓取效率;稍有疏忽则可能导致整站收录异常。建议整理一份自己网站真实目录结构的清单,在修改前先备份原文件;每次调整后务必验证 URL 与规则是否匹配,尤其在改用全新的目录结构或迁移网站时,更应重点复查。掌握语法细节、遵循官方文档、慎用全局封锁,才能让这份"守门人"真正发挥正向作用。