Robots.txt 是网站根目录下的一份纯文本文件,它通过简单的指令告诉搜索引擎爬虫哪些页面可以抓取、哪些应当避开。合理的配置能让搜索爬虫把抓取额度用在核心内容上,提升索引效率;配置不当则可能让整站或重要页面从搜索结果中消失。本文就从语法开始,逐步拆解常见场景下的写法。
Robots.txt 的书写采用纯文本格式,每行一条指令,主要由三部分构成:用户代理声明(User-agent)、禁止规则(Disallow)和允许规则(Allow),此外还有一个独立的 Sitemap 声明。指令不区分大小写,但统一使用小写更利于后期维护。
User-agent 用来指定规则适用于哪类爬虫,例如 "User-agent: Googlebot" 仅约束谷歌爬虫,而 "User-agent: *" 则匹配所有爬虫。需要特别留意的是,每组 User-agent 声明后必须紧跟至少一条 Allow 或 Disallow 规则,否则该组声明会被视为无效。
Disallow 的值如果为空(即 "Disallow:"),表示允许爬虫抓取全部内容,这与不写任何规则的效果一致。当 Allow 和 Disallow 同时作用于一个路径时,规则更具体、匹配更精确的那条会优先生效。
Disallow 后跟路径,用于阻止爬虫访问该路径下的所有资源。比如 "Disallow: /admin/" 会拦截整个 admin 目录及其子页面;而 "Disallow: /" 则代表阻止全站内容抓取,除非你有明确理由,否则不要轻易使用。路径必须从斜杠开始,否则规则可能无法被正确解析。
一个非常现实的坑是:直接从网上复制别人的配置,却忘了修改路径,结果导致自己的首页或产品列表页被误屏蔽。建议写完规则后,先通过搜索引擎的抓取测试工具验证一遍。
Allow 最常见的用途是在一个被禁止的目录里,为特定文件或子目录开放抓取权限。例如你不想让爬虫收录后台文件,但又希望某个公开的样式表能被正常读取,就可以这样写:
上述规则的效果是:admin 目录下除了 public 子目录可以被爬虫访问,其他内容一律拒绝。需要记住的是,Allow 必须与它所对应的 Disallow 放在同一个 User-agent 块内,跨块声明不会生效。
Sitemap 指令用于主动告知爬虫站点地图的地址,它不依赖任何用户代理声明,可以独立出现在文件中的任意位置,通常置于末尾。写法很简单:
Sitemap: https://www.example.com/sitemap.xml
一个文件里可以写多行 Sitemap,分别指向不同格式的地图文件。需要注意的是,Sitemap 行必须写完整的绝对 URL,且每行对应一个地址。
下面给出三种常见的需求写法,可直接参考调整。
场景一:仅屏蔽后台目录
User-agent: *
Disallow: /wp-admin/
Sitemap: https://www.example.com/sitemap.xml
这是管理后台最常用的配置,既能保护后台不被公开索引,又不影响前台内容的正常抓取。
场景二:屏蔽动态参数页面
User-agent: *
Disallow: /search?
Disallow: /*sort=
电商站常通过 URL 参数生成大量重复页面,这类页面容易被爬虫视为低质量内容。屏蔽带特定参数的 URL 能减少抓取浪费,但要注意别误伤正常的筛选功能页面。
场景三:允许抓取但不允许索引
严格来说,Robots.txt 只能控制"抓取",无法阻止页面被索引。如果某个页面允许抓取但不想出现在搜索结果中,正确做法是在页面头部添加 noindex 标签,而不是靠 Robots.txt 处理。这是一个特别容易混淆的点。
Robots.txt 的匹配遵循最长匹配原则:当有多条规则同时匹配某个 URL 时,字符数最多的那条规则生效。例如 Disallow 了 /a 和 /a/b,访问 /a/b/c 时,更长的 /a/b 规则会优先生效。
另一个容易忽略的问题是语法错误。比如遗漏了冒号、路径前少了斜杠、或者是把 User-agent 写在规则后面,这些都可能导致整段规则失效。建议使用各大搜索引擎提供的校验工具,检查文件是否被正确解析。
是的。爬虫默认会在域名根路径下查找 robots.txt,例如 https://www.example.com/robots.txt。如果文件放在其他目录,爬虫将无法识别,规则自然也不会生效。
可以。你可以为不同的爬虫单独设置规则,比如针对 Googlebot 开放一些路径,而对其他爬虫做更严格的限制。每个 User-agent 块之间用空行分隔即可,但要确保每个块内都有对应的 Allow 或 Disallow 规则。
修改文件后,爬虫通常会在下次抓取时读取最新版本,短则几小时,长则几天不等。如果你想加速更新,可以在搜索引擎的站长平台主动提交该文件,或者请求重新抓取。
Robots.txt 是 SEO 基础环节里不可忽略的一环,但它并不是用来控制页面索引的最优工具。建议先把全站的抓取预算想清楚,哪些目录必须被收录、哪些只是资源文件或后台,再动手写规则。配置完成后,务必用校验工具测试,并定期检查抓取日志,观察是否有重要页面被意外拦截。守住"宁可少写,不可误伤"这条底线,就能避免大部分因配置失误引发的搜索流量损失。