当爬虫首次访问你的站点时,它首先会去寻找一个名为 robots.txt 的文件。这个纯文本文件就像一份访客守则,告诉搜索引擎哪些区域可以进入、哪些地方需要止步。一份设置得当的 robots.txt,既能减少无效抓取对服务器资源的消耗,又能保护未公开的目录,同时让搜索引擎更聪明地收录你的优质内容。下面我们就从零开始,把它彻底说清楚。
robots.txt 必须存放在网站的根目录下,且文件名不可更改。比如你的域名是 example.com,那么该文件的访问地址就是 https://example.com/robots.txt。文件采用纯文本格式,编码推荐使用 UTF-8,避免出现中文注释乱码的情况。
该文件由若干组规则构成,每组规则都以 User-agent 开头,后跟一条或多条具体的指令。最常用到的指令有以下四种:
注意,每条 User-agent 之后至少要跟随一条 Disallow 或 Allow 指令,否则该组规则无效。不同爬虫的规则组之间需要用空行隔开,以示区分。
当网站处于开发阶段、或正在进行临时维护时,通常需要屏蔽所有爬虫。此时的核心写法如下:
User-agent: *
Disallow: /
需要清楚的是,这一配置只阻止爬虫抓取内容,并不等同于彻底删除索引。如果外部站点已有链接指向你的网页,搜索引擎仍可能依据链接信息将页面收录,只不过无法获取页面正文。
实际上,站点根目录下不存在 robots.txt 文件时,爬虫默认就拥有抓取任何页面的权限。如果你想明确表达这一态度,可以主动创建一个文件,内容为:
User-agent: *
Disallow:
这里的 Disallow 后不接任何路径,代表空规则,即不屏蔽任何目录。注意不要漏掉冒号后的空格,也不要误写成 Disallow: /。
后台管理页面、用户隐私数据目录以及临时缓存文件夹,通常都不希望被搜索引擎收录。推荐采用如下写法:
User-agent: *
Disallow: /admin/
Disallow: /user-center/
Disallow: /temp/
这里有一个容易忽略的细节:路径匹配是区分大小写的。如果实际目录名是 /Admin/,而你写的是 /admin/,规则将不会生效。建议统一使用小写路径,并在配置完成后逐一核对。
如果某个目录下的大部分内容你都不愿公开,但其中有特定的文件(如品牌 Logo)需要被搜索到,就可以利用 Allow 与 Disallow 的优先级关系。以图片目录为例:
User-agent: *
Disallow: /images/
Allow: /images/logo.png
在同类指令中,路径匹配字符数最多、最具体的规则拥有更高优先级。因此上面的 Allow 规则能够覆盖更宽泛的 Disallow 规则。
除了通用规则,你还可以针对特定搜索引擎设定独立的抓取策略。例如,百度爬虫的标识名为 Baiduspider,而 Bing 爬虫名为 bingbot。如果你希望只为百度开放某个板块,可以这样写:
User-agent: Baiduspider
Disallow: /video/
User-agent: *
Disallow:
这一写法意味着百度不能抓取视频目录,而其他所有爬虫均可抓取全站。值得注意的是,Googlebot 对文件大小和规则条目数有明确限制,建议控制规则数量,避免文件超过 500 KiB。
在实战中,很多站点因为写错了这个小文件而遭遇收录异常。以下是几个高频问题及其修正方法:
此外,建议利用搜索引擎站长工具来验证 robots.txt 的语法正确性,并查看具体的抓取统计,以判断规则是否符合预期。
robots.txt 的作用是阻止未来的抓取,而并不直接导致已收录页面立即下线。搜索引擎会根据自身的抓取频率重新访问你的站点,在发现新规则后逐步停止抓取并移除索引,这一过程通常需要数日至数周时间。
Disallow 是让爬虫根本不进入页面读取内容;而 noindex 是让爬虫进入页面,但明确告知不要将页面收录进索引。对于不想展示给用户的敏感页面,使用 noindex 并配合 Allow 抓取往往更为可靠,因为 Disallow 状态下爬虫看不到页面里的 noindex 标记。
不能。robots.txt 仅针对遵守协议的搜索引擎爬虫,恶意采集脚本或第三方工具并不会受其约束。想要保护内容,应当通过服务器端的访问权限设置或更严格的安全策略来实现。
掌握 robots.txt 的核心语法并不难,难点在于区分不同场景下的最佳实践。给出的核心建议是:先明确哪些目录必须保密、哪些路径允许收录,再动笔编写规则;每写完一组规则,就去站长工具中验证;尤其不要在线上环境随意使用全站 Disallow,以免影响搜索流量。将文件精简为纯 ASCII 内容,保持路径大小写一致,并定期复查,你的网站抓取策略就会一直处于健康状态。