搜索引擎爬虫每次光顾你的网站,首先要看的不是首页内容,而是存放在站点根目录下那个不起眼的纯文本文件——robots.txt。它的作用就相当于一份"访问须知",告诉爬虫哪些地方可以自由查看,哪些角落不允许进入。设置得当,不但能保护站内的隐私数据不被索引,还能引导爬虫将有限的抓取配额集中在真正重要的内容上。
按照约定,robots.txt 文件需要放在网站根目录下,命名为 robots.txt 并采用 UTF-8 编码。每行指令独立排列,并且所有路径规则都区分大小写,这一点在实际写文件时经常被疏忽。
一份基础配置通常由下面几个主要字段构成:
来看一个具体的例子:
User-agent: *
Disallow: /private/
Allow: /private/shared/
Sitemap: https://yourdomain.com/sitemap.xml
上述规则的含义是:一切爬虫均被许可进入站点,但 /private/ 目录整体封锁,唯独其中名为 shared 的子目录获得放行。值得注意的是,Allow 的支持范围并不广,遇到不识别该指令的爬虫时,更严格的 Disallow 规则依然会先行生效。
不同定位的站点,抓取控制策略往往天差地别。以下整理了三种常见需求,以及各自对应的设定思路。
面向收录为目标的新站点或内容平台,通常希望爬虫尽可能多地浏览每一个页面。在这种前提下,只需声明一个不带路径的 Disallow 即可:
User-agent: *
Disallow:
即使省略 Disallow 这一行也能达到相同效果。这里最常出现的错误是把 Disallow 值写成 /,只要出现这个配置,所有搜索到来爬虫都会立刻被拒之门外,网站收录将陷入停滞,需要格外留意。
若出于流量分配或信息保护的目的,不想让某家特定的搜索引擎抓取网页,就可以为它单独设立封锁条目:
User-agent: Baiduspider
Disallow: /
这条规则只会对百度的爬虫产生作用,Google、Bing 等其他搜索程序完全不受任何影响。制定这类限制前,应当先查阅各搜索引擎的帮助文档,确认爬虫标识的准确拼写,像是 Bingbot、Googlebot 等名称各有固定写法,一旦写错就无法起到预期效果。
不少网站的管理后台、结算页面或临时测试目录,并不希望被搜索引擎收录。最直接的做法是列出所有需要遮蔽的路径:
User-agent: *
Disallow: /admin/
Disallow: /checkout/
Disallow: /test/
路径涵盖的写法要尽量具体,通常建议在结尾加上斜杠,表示屏蔽整个文件夹。这里同样需要留心,该文件只对善意的爬虫有效,并不能起到真正的安全防护作用,涉及权限控制的内容还应配合账号认证体系来保护。
在实际维护中,以下这几点经常被人忽略,却又直接影响着规则的执行效果。
写完规则之后,很难单纯通过肉眼判断是否发挥了作用。通常可以借助以下几个方面来做核查。
需要记住,robots.txt 只是协商性质的规则,它依赖爬虫自觉遵守,无法给予硬性约束。对于真正重要的敏感信息,还是要依靠访问权限或加密机制去兜底,不能把全部指望都寄托在这个文本文件上。
无法完全保证。robots.txt 只是向爬虫提出不要访问的请求,若此前页面已被其他外部链接收录,或者某个爬虫不遵守该协议,敏感信息仍然可能被索引。想实现彻底隐藏,需要结合 noindex 标签或访问控制等手段。
Allow 并非所有搜索引擎都能支持。只有部分主流的搜索引擎能正确识别这一指令,其他爬虫在遇到它时可能会直接忽略。因此在写规则时,不建议过度依赖 Allow 去放行具体文件,尽量将禁止范围划分得更细致。
恢复时间并不固定,通常取决于搜索引擎重新抓取该文件的频率。短则数小时,长则可能需要一两周。如果误封了全站,要尽快修正文件,并通过搜索平台的提交入口通知爬虫重新访问,以加快恢复进程。
合理配置 robots.txt 是网站运营里看似简单却影响深远的一环。重点在于明确自身的抓取需求,善用 User-agent 与 Disallow 组合,并随时通过验证工具确认效果。建议新手站长先从全站放行入手,待熟悉规则后再逐步针对具体目录做细化管控,切勿一开始就堆叠复杂语句。