Robots.txt 是网站与搜索引擎爬虫之间的一份书面约定。它安静地躺在站点根目录,用最简单的文本指令告诉爬虫:哪里可以畅行无阻,哪里需要止步。一份合理的配置,既能守护后台与敏感数据不被收录,又能让爬虫把有限的抓取精力聚焦在高价值页面上,是每位站点管理者都应掌握的基本功。
这份控制文件并不神秘,它的语法规则相对简单,核心在于理解每条指令的意图。整个文件由若干规则组构成,每组规则先声明适用的对象,再列出具体的访问权限。
常用的指令字段及其作用如下:
一个开放的默认配置如下所示:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
这段指令表示,所有爬虫均可访问全部资源,并额外提供了站点地图的地址。
理解了基础语法,接下来要解决的是真实业务场景。不同的阶段和需求,对应的配置方案也截然不同。
当站点尚在搭建或正在进行大幅改动时,不希望任何页面被收录。此时,一条通配规则即可解决:
User-agent: *
Disallow: /
这份配置会阻止所有搜索引擎抓取任何 URL。但请务必留意,它无法移除已经在搜索引擎检索结果中呈现在用户面前的旧快照。若需快速清理历史索引,应配合搜索引擎站长工具中的“删除页面”功能使用。
生产环境下的最常见的需求,是拦截后台入口、会员中心或站内搜索结果页这类重复或私密的内容。例如,需要屏蔽 /admin/ 和 /user/ 路径:
User-agent: *
Disallow: /admin/
Disallow: /user/
这里并未刻意添加 Allow 指令,因为未被 Disallow 覆盖的路径在默认状态下就是允许抓取的。如果冗余添加 Allow: /,反而容易在部分爬虫的解析逻辑中造成歧义。
某些爬虫的抓取频率极高,可能会给源站带来不必要的负载。此时,可以针对不同蜘蛛设置差异化的权限。例如,允许 Googlebot 抓取图片资源,但禁止其他未知名爬虫访问:
User-agent: Googlebot
Allow: /images/
User-agent: *
Disallow: /images/
需要注意的是,这种写法要求先定义具体爬虫,再定义通配规则,确保优先级高的规则不会被子级规则干扰。
配置过程中的一些细微差别,往往决定了最终效果的成败。以下是几个容易疏忽的环节:
Robots.txt 并非一次配置终身使用的静态规则。随着站点结构的调整,旧规则可能成为新页面的流量阻碍。
不能。Robots.txt 的本质是禁止“抓取”,而非“收录”。如果页面被 Disallow,爬虫将无法读取页面内容,也就不会将其收录。但若该页面已被收录,此规则只能阻断后续更新,无法让已收录的链接快速消失。若需彻底从索引中移除,还需通过站长平台提交“移除请求”。
在标准协议中,存在最长匹配原则。即对于同一个 URL,爬虫会读取所有符合的规则,并遵循最具体、匹配字符数最多的那条。例如 Allow 中配置了 /product,且 Disallow 配置了 /,那么访问 /product/abc 时,具体的 Allow 指令生效。但部分早期爬虫只支持 Disallow,遇到这种不兼容情况会导致规则判断错误,因此配置时建议在注释中提前声明。
不影响。Sitemap 指令仅仅扮演“通知”角色,帮助爬虫更快发现新链接。抓取频率由站点更新速度、页面权重以及服务器的响应速度共同决定。即使不写 Sitemap 指令,只要在站长平台提交了站点地图,同样能发挥相应作用。
合理规划 Robots.txt 是网站成功进行搜索引擎优化的基石。与其追求复杂的规则高深匹配,不如回归简单与明确。在配置时,请务必先理清站点的资源清单,明确哪些是核心索引资产、哪些是安全敏感区域,再依据不同的抓取对象逐条写入规则。规则配置完成后,切记利用搜索引擎官方的验证工具进行模拟测试,并建立定期复核机制,确保规则始终与真实的站点结构保持一致。