robots.txt 是放置在网站根目录下的纯文本文件,用来向搜索引擎爬虫说明哪些路径可以抓取、哪些需要避开。它不直接决定页面是否被收录,而是管理抓取行为。配置合理能提升抓取效率,让新内容更快被发现;配置不当则可能阻碍收录,影响搜索表现。下面从语法、优先级到典型场景逐一拆解,帮助你避免踩坑。
robots.txt 本质上是写给爬虫看的访问协议,告知哪些区域允许进入。对于遵守规范的搜索引擎(如 Google、Bing 的官方爬虫),这份文件会被严格执行;但对于恶意采集程序或未遵循协议的工具,它形同虚设。因此,涉及用户隐私、支付流程、后台管理等高敏路径,必须依靠登录验证、IP 白名单等强硬手段保护,不能仅依赖 robots.txt。
另一个常见误解是"写了 Disallow 就等于不被收录"。实际上,robots.txt 阻止的是"抓取",而不直接控制"索引"。若其他网站链接了该页面,搜索引擎仍可能根据锚文本等信息将其纳入索引,只是无法抓取内容。想彻底阻止页面出现在搜索结果中,应在页面 HTML 中加入 noindex 元标签,这才是针对索引的直接控制。
举例:某电商网站用 Disallow: /cart/ 屏蔽购物车页面,但结算页 /checkout/ 仍应保持可抓取,同时用 noindex 防止被纳入索引。这种"抓取与索引分离"的思路,在配置时需要分清。
robots.txt 由若干条规则组构成,每组以 User-agent 开头。书写格式固定为"字段名: 值",建议冒号后保留一个空格,字段名统一用小写,这样可以降低不同解析器的兼容性问题。每行只能写一条指令,空行用来分隔不同的规则组。
User-agent 标识这组规则针对哪个爬虫。例如 User-agent: Googlebot 仅对谷歌爬虫生效;User-agent: * 表示适用于所有未被单独指定的爬虫。同一文件可包含多组规则,针对不同爬虫定制差异化策略。注意:若同时存在针对特定爬虫和通配符的规则,特定爬虫会优先匹配自己的专属规则。
举例:百度爬虫(Baiduspider)和谷歌爬虫(Googlebot)对同一路径的抓取策略可能不同,你可以为它们分别配置,互不干扰。
Disallow 用于禁止抓取的路径,Allow 用于允许抓取的路径。若 Disallow 后空着不写值,表示解除所有限制,允许全站抓取。当一个链接同时命中允许和禁止规则时,搜索引擎遵循"最长匹配优先":路径更具体、更长的规则获胜。
例如同时存在 Disallow: /api/ 和 Allow: /api/public/,因为后者路径更长、更明确,所以 /api/public/ 下的内容可以被抓取。这个原则在精细化控制时非常实用,可以只放行某个子目录,而屏蔽同一父目录下的其他内容。
此外,通配符支持有限,通用的 * 和 $ 符号($ 表示行尾)在多数主流引擎中有效,但低版本或小众引擎可能不支持,正式环境建议用完整路径代替通配符,减少兼容风险。
Sitemap 指令用于声明站点地图的 URL,帮助爬虫更快发现新页面,减少探测时间。通常放在文件末尾,如 Sitemap: https://example.com/sitemap.xml。注意:Sitemap 指令不归属于任何 User-agent 规则组,是独立行。
Crawl-delay 字段用于设定两次抓取请求之间的等待秒数,适合服务器并发处理能力较弱的站点,以降低负载。但并非所有搜索引擎都认可此字段,部分爬虫会直接忽略。如果你的站点需要控制抓取频率,建议结合服务器日志观察实际爬取频率,并考虑在 CDN 或服务器层面做限速,而不是完全依赖此参数。
以下配置范例覆盖常见需求,可直接参照调整路径。
常见避坑:不要用 Disallow 屏蔽整个站点(Disallow: /),除非确实需要暂停抓取;不要把敏感数据路径写进 robots.txt,因为这份文件是公开的,任何人都能查看——它等于告诉别人"这里值得看看"。
配置完成后,务必验证文件是否生效。第一步,在浏览器直接访问 https://你的域名/robots.txt,检查内容是否正常返回、有无语法错误。第二步,使用搜索引擎的站长工具(如 Google Search Console 的 robots.txt 测试器或 URL 检查工具)模拟抓取,确认目标页面是否被正确允许或禁止。
日常维护时,可每月检查一次文件,确保新添加的目录或改版的路径未被遗漏。若网站结构频繁变动,建议在发布流程中加入 robots.txt 的审查环节。同时注意文件大小不要超过 500KB,避免内容过多导致解析超时。
不能。robots.txt 只对遵守协议的搜索引擎爬虫有效,且阻止的是"抓取"而非"索引"。即使禁止抓取,其他网站链接到该页面时,搜索引擎仍可能将其纳入索引(只是无内容可用)。要彻底阻止收录,需配合 noindex 元标签或登录认证。
遵循"最长匹配优先"原则。例如 Disallow: /api/ 和 Allow: /api/public/ 同时存在时,/api/public/ 下的链接允许抓取,因为该规则路径更长、更具体。若两条规则路径长度相同,则按文件中的出现顺序,后面的生效。
Crawl-delay 并非所有搜索引擎都支持,部分爬虫会忽略此字段。若你的服务器负载过高,建议通过服务器日志分析实际抓取频率,并在 CDN 层面配置限速或使用抓取速度控制工具来调整,而不是只依赖 robots.txt。
robots.txt 是管理抓取行为的良好工具,但绝不是安全防线。配置时重点记住三个核心:先分清"抓取"与"索引"的区别,灵活运用 Allow 与 Disallow 的最长匹配原则,并定期验证文件可用性。上线前在站长工具中测试,平时留意路径变化及时更新。对待敏感数据,始终用账号权限或 IP 限制做硬保护,如此配置,才能让爬虫在正确的区域高效工作,又不暴露安全漏洞。