robots.txt 文件是网站与搜索引擎爬虫之间的沟通协议,通过它你可以明确告知爬虫哪些页面允许抓取、哪些路径需要规避。配置合理的 robots.txt,能有效保护后台、会员中心等敏感区域,同时让爬虫的抓取配额更高效地用于核心内容。反之,一旦配置出错,轻则导致部分页面迟迟不被收录,重则影响整站索引。下面我们就从文件放置、语法规则到常见误区,系统梳理一份可直接落地的操作指南。
robots.txt 的文件名固定为小写字母,必须放置于网站的根目录下。整个文件由若干条独立的记录组成,记录之间需要用空行隔开,以便爬虫正确解析分组边界。每条记录内部包含若干指令行,指令的书写格式统一为"字段名:值",例如 Disallow: /private/。字段名对大小写不敏感,但值中涉及的 URL 路径通常区分大小写,这一点需要特别留心。文件中的注释以 # 符号开头,可以独占一行,也可以放在指令行末尾,用于说明该条规则的具体意图。
在逻辑结构上,每条记录先声明 User-agent(指明规则适用于哪个爬虫),随后跟随一组或多组 Disallow(禁止)或 Allow(允许)规则。需要明确的是,一个 User-agent 声明之后可以跟随多条 Disallow 与 Allow 指令,但不能再出现另一个 User-agent 字段。此外,主流搜索引擎(如 Google、Bing)都支持用 Allow 去覆盖更具体的 Disallow 规则,但不同爬虫对优先级的具体解释存在细微差别,在为多搜索引擎做配置时需分别验证。
最常见的需求是禁止所有爬虫抓取全站,这时可以使用通配符:
User-agent: *
Disallow: /
如果想仅仅屏蔽特定目录,例如后台及临时文件目录,可以这样设置:
User-agent: *
Disallow: /admin/
Disallow: /tmp/
此处有一个高频易错点:路径末尾的斜杠至关重要。写成 /admin/ 表示只匹配 admin 目录本身及其子路径;若省略斜杠写成 /admin,则会匹配所有以 admin 开头的路径,如 /administrator、/admin-panel 等,极容易造成误伤。建议在配置后使用在线工具或浏览器直接访问 robots.txt 进行核对。
当需要屏蔽某个大目录、但单独放行其中的一个子目录时,Allow 指令就派上了用场。例如,你希望爬虫只抓取博客专题栏目下的内容,而屏蔽博客的其他所有页面:
User-agent: *
Disallow: /blog/
Allow: /blog/special/
在此场景下,匹配优先级遵循两个通用原则:其一,当两条规则的路径长度相同时,Allow 指令优先于 Disallow;其二,当路径长度不一致时,路径更长的那条规则优先。依照上述逻辑,/blog/special/ 下的页面可以被正常抓取,而 /blog/ 下的其余内容则被屏蔽。需要注意的是,切勿将 Allow 与 Disallow 的书写顺序颠倒,这并不会影响执行结果,但会降低文件的阅读性。
针对不同的搜索引擎爬虫,你可以设定完全独立的抓取策略。例如,希望 Google 完全收录、而对百度暂时关闭抓取:
User-agent: Baiduspider
Disallow: /
User-agent: Googlebot
Disallow:
这里 Disallow 后不留任何字符,表示允许该爬虫抓取全部内容。另外需要强调,Sitemap 指令并不归属于任何特定的 User-agent 记录,它属于全局声明,通常建议放在文件末尾,写法为 Sitemap: https://www.example.com/sitemap.xml,这有助于爬虫更快发现并抓取更新的 URL。
编写 robots.txt 时的低频错误往往带来高影响后果。例如将 Disallow: / 误写为 Disallow:(缺少斜杠),含义就从"禁止所有"变成了"允许全部",两者天差地别。另一个常见问题是将规则写在了错误的记录中,或者漏掉了 User-agent 声明,导致整条记录被爬虫忽略。
排查时,建议借助搜索引擎站长平台提供的 robots 测试工具。将文件内容粘贴进去,输入一个具体的页面 URL,工具会模拟爬虫的匹配结果,直接显示该 URL 是否被允许抓取。这个步骤能快速定位问题,避免上线后才发现索引异常。此外,要养成改动后观察日志的习惯,查看爬虫的实际抓取状态码,若出现 404 或 5xx,说明文件路径或服务器配置存在问题。
部分搜索引擎支持在 robots.txt 中使用通配符来简化规则,例如 * 号可以匹配任意字符序列,$ 号表示匹配行尾。假设你想屏蔽所有以 .pdf 结尾的静态文件,可以使用 Disallow: /*.pdf$。同样,若要禁止爬虫访问所有带问号的动态 URL,可以写成 Disallow: /*?。
实践中的建议是:不要过度依赖通配符,尽量使用具体的目录路径,因为通配符的解析在部分小众爬虫上存在兼容性问题。同时,对于资源类文件(如图片、CSS、JS),是否屏蔽抓取需要权衡利弊——屏蔽 JS/CSS 可能会影响搜索引擎对页面渲染效果的评估,反而降低搜索排名。
搜索引擎会定期重新抓取 robots.txt 文件,通常间隔为 24 小时到几天不等。修改后无需手动提交,但可以通过站长平台主动请求更新。如果网站规模较大,建议在非高峰期修改,并持续观察抓取日志中的爬虫访问情况。
可以。你可以在文件中放置多行 Sitemap 指令,每行对应一个独立的 Sitemap 文件,但数量不宜过多,一般建议不超过 5 个,且每个 Sitemap 的 URL 必须是完整的绝对地址。这种声明方式对所有爬虫均有效,且不需要重复放在每个 User-agent 记录下方。
Disallow 是阻止爬虫抓取,但爬虫若已获取了该 URL(例如通过外部链接),仍然可能将其收录并展示;而 noindex 标签则明确要求搜索引擎不索引该页面。对于真正不希望被收录的敏感内容,更稳妥的做法是两者搭配使用,即先让爬虫能访问到页面并读取 noindex 指令,再配合登录权限等访问控制手段。
配置 robots.txt 的关键在于理解文件结构、掌握路径匹配规则,并养成验证的习惯。建议你在每次修改后,立即使用站长工具的测试功能核对关键 URL 的抓取权限,同时定期检查网站日志中的爬虫异常行为。合理运用 Allow 覆盖、区分爬虫策略以及声明 Sitemap,能让你的站点抓取效率得到明显提升。记住,robots.txt 是指导协议而非访问控制机制,若需要真正的权限保护,仍需结合服务器端的认证设置。