每个网站根目录下都藏着一个看似不起眼的纯文本文件 robots.txt,它就像一张写给搜索引擎爬虫的「参观须知」,清楚地列出哪些区域欢迎访问、哪些角落禁止入内。用得恰当,能帮搜索引擎把抓取精力集中在关键页面上,新内容索引速度也会更快;但稍有不慎,可能让整站权重受损,甚至从搜索结果里消失。下面这份指南,帮你把握它的语法逻辑和容易踩的坑。
robots.txt 必须放在网站根目录,访问路径为「域名/robots.txt」。它只控制爬虫的抓取行为,并不决定页面是否被收录。如果你希望某个页面彻底从搜索结果中消失,正确做法是给该页面设置 noindex 标签——若仅用 robots.txt 屏蔽,爬虫读取不到页面内容,结果可能让页面停在「已发现但未收录」的尴尬状态。
同时要认清一个事实:这份文件对爬虫来说只是君子协定。主流搜索引擎会遵守,但恶意采集脚本压根不会理会。凡涉及用户隐私、订单数据或后台管理目录,必须叠加登录验证、IP 白名单等硬性防护,千万别把安全希望全押在 Disallow 规则上。每次修改文件后,最好人工复核一遍路径,以防写错导致敏感目录意外暴露。
整个文件由若干规则组构成,每组必须以 User-agent 字段开头。字段名和值之间用英文冒号加空格分隔,写法统一用大写字母,避免格式不匹配引发兼容问题。
这个字段指定规则对哪个爬虫生效。比如「User-agent: Googlebot」只影响谷歌蜘蛛,「User-agent: Bingbot」只影响必应。想覆盖所有搜索引擎,就用通配符「User-agent: *」。同一文件里可以为不同蜘蛛分别建规则组。当一个爬虫匹配到多组规则时,主流搜索引擎按「最长匹配优先」原则合并处理——路径更具体的那组规则优先级更高。
Disallow 声明禁止抓取的路径前缀,Allow 声明允许抓取的路径前缀。注意「Disallow:」后面留空(不写任何值)代表清空限制,等同于允许爬虫抓取全站。当两者发生冲突时,以更长的路径匹配为准。比如同时存在「Disallow: /api/」和「Allow: /api/public/」,那么 /api/public/ 下的资源会被正常放行。写路径时建议统一用根目录相对的写法,并带上末尾斜杠,减少歧义。
Sitemap 字段用来声明站点地图的完整 URL,一般放在文件末尾,方便爬虫直接发现内容清单。Crawl-delay 指定抓取间隔秒数,不过谷歌早就声明完全忽略这个指令;如果确实需要控制 Googlebot 的抓取频率,请到 Search Console 的「抓取速率设置」里调整。Bing 等其余搜索引擎仍然支持 Crawl-delay,可以保留作为参考。
以下列举几个常见需求的标准格式,实际用时按需替换路径即可,注意每条指令各占一行。
写好之后,建议使用搜索引擎提供的 robots.txt 测试工具验证效果,观察规则是否按预期生效。
初学者容易犯的一个错误是把 robots.txt 当作安全工具,忽略后端防护。另一个错误是误用通配符或正则表达式——robots.txt 只支持有限的通配符,如 * 和 $,并且不同搜索引擎支持程度不同,谨慎使用为妙。此外,文件大小建议控制在较小范围内,过长或层次太深的规则组合会增加爬虫解析成本,反而影响抓取效率。
有时候你可能会发现,明明设置了 Disallow,但搜索引擎依然收录了相关页面。这通常是因为对方通过外链或 Sitemap 发现了 URL,在没有明确 noindex 标识的情况下,仍可能将其展示在结果中。解决思路是在禁止抓取的同时,配合 noindex 标签,双管齐下彻底从索引中移除。
有。搜索引擎一般不会每次抓取都重新下载 robots.txt,而是根据 HTTP 缓存头决定更新频率。修改文件后,通常需要几天到一周才能完全生效,这期间旧规则可能仍在执行。想加快生效速度,可以在搜索引擎站长工具中手动提交新文件。
分对象。Googlebot 已明确忽略该指令,Bing 和 Yahoo 仍会读取它。如果你的主要流量来自谷歌,建议直接在 Search Console 里设置抓取速率;如果也需要照顾 Bing,保留一个合理的 Crawl-delay 值不会带来坏处。
技术上可以,但不建议全盘屏蔽,正常图片有助于提升页面丰富度。若只想屏蔽特定目录下的图片,可以 Disallow: /images/ 即可。另外注意,图片的流量入口可能来自其他站点,robots.txt 只约束搜索引擎自身的行为。
robots.txt 是网站与搜索引擎沟通的基础工具,掌握好语法和边界能让抓取效率事半功倍。动手配置前,先明确哪些路径真正需要屏蔽,避免误伤重要内容;配置后,记得用测试工具和站长后台持续观察抓取报告。安全防护不要依赖它,复杂逻辑也不建议过度堆砌。稳扎稳打,你的站点索引表现自然会越来越好。