当搜索引擎的爬虫造访你的网站时,它通常会先查看根目录下的 robots.txt 文件。这个简单的文本文件,如同一份给爬虫的“访问说明书”,明确规定了哪些内容可以抓取,哪些需要跳过。一份合理的 robots.txt 配置,既能避免后台页面和重复内容出现在搜索结果里,也能引导爬虫将有限的抓取资源集中在有价值的内容上。
要创建一份有效的 robots.txt,需要把它放置在网站根目录,文件名必须为小写的robots.txt,并且支持大小写敏感的路径匹配。文件应保存为 UTF-8 编码,每一条指令独占一行。一个标准的配置通常包含以下核心部分:
看一个基础组合的写法示例:
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://www.example.com/sitemap.xml
这段代码的意思是:所有爬虫都可以访问全站,但 /admin/ 目录被禁止,其中 /admin/public/ 这个子文件夹例外,可以正常抓取。需要留意的是,由于并非所有搜索引擎都识别 Allow 指令,在不支持它的爬虫中,更严格的 Disallow 规则仍会生效。因此,想依靠 Allow 来放宽限制,并不能在所有引擎上得到保证。
不同的网站类型和业务阶段,对抓取控制的需求各不相同。以下梳理了三种最常见的配置模板,可直接参考使用。
对于以内容为主的站点,核心目标是获得尽可能多的页面收录。此时,可以让 Disallow 指令保持空白即可:
User-agent: *
Disallow:
这里有个容易犯的错误:如果直接删除 Disallow 这一行,效果是一样的,并不会对抓取造成影响。但如果误写成 Disallow: /,则会直接阻断所有爬虫的访问,导致收录立即停滞,属于需要严防的严重失误。
如果不想让某个搜索引擎收录你的网站,但仍希望保留其他搜索渠道的流量入口,可以为特定爬虫单独定制规则:
User-agent: Bingbot
Disallow: /
上面这段配置仅对必应的爬虫生效,不会影响谷歌或百度等搜索引擎对网站的正常抓取。执行此操作前,务必前往各搜索引擎的官方文档,核对爬虫名称的准确拼写,比如百度爬虫应写作 Baiduspider。名称一旦拼写有误,屏蔽规则就会形同虚设。
当网站进行大规模改版或涉及敏感数据迁移时,临时阻断全站抓取并抓拍是稳妥且必要的措施:
User-agent: *
Disallow: /
务必牢记,robots.txt 只是抓取协议,并非安全屏障。它更像一个提示牌,依靠爬虫自觉遵守。所以,切勿依赖它来保护隐私信息或敏感数据,真正的安全防护必须依赖服务器端的认证与权限设置。
robots.txt 的路径匹配遵循最长匹配原则,即爬虫会选择最具体、最长的规则来执行。例如,若同时有 Disallow: /api 和 Disallow: /api/user,那么访问 /api/user/info 时,后者的规则将优先生效。此外,路径末尾的斜杠同样有讲究,/admin 会匹配 /administrator 这类前缀,而 /admin/ 只匹配该目录下的文件。理解这些细节,可以避免出现意料之外的封禁或漏放。
写完 robots.txt 并部署到线上后,并不能就此高枕无忧。建议通过各搜索引擎站长平台提供的“ robots 测试工具”进行双重校验。使用这类工具,可以输入具体的 URL,实时查看该链接是被允许抓取,还是被某条规则禁止。常见的意外状况包括:DNS 解析异常导致文件无法读取,或者服务器的 MIME 类型设置错误,导致该文件被当作 HTML 页面而非纯文本文件返回,这些都会让规则完全失效。
不是。搜索引擎爬虫通常会周期性访问该文件,并且有一定的缓存时间。修改 robots.txt 后,规则的全面生效可能需要数小时甚至数天,具体情况取决于各搜索引擎的抓取频率。若想加快速度,可主动通过站长平台的“抓取诊断”功能推送更新。
可以阻止抓取,但无法保证绝对不收录。如果某个页面已经被其他外部链接指向,搜索引擎仍有可能通过其他渠道发现并收录它,只是无法抓取内容正文。如果希望彻底从搜索结果中移除某个页面,更可靠的方式是使用 noindex 标签,或通过站长平台的索引移除工具。
如果误将 Disallow 设置为 /,只需立刻删除这行代码或将其改为空值,并上传覆盖原文件即可。由于规则恢复通常比初次生效更快,一般在几分钟到几小时内,爬虫就会重新开始抓取。期间若页面被移除索引,待规则恢复后重新提交 sitemap,可以加速恢复收录进程。
配置 robots.txt 并不复杂,但细节决定成效。建议在部署后定期查看站点日志或站长工具的抓取统计,确认爬虫的实际行为与配置意图吻合。同时,要将安全文件始终置于 Website 根目录,并保持文件的简洁性,避免添加过多冗余的注释或无效规则,这有助于降低解析错误的风险。