网站根目录下的 robots.txt 文件,本质上是写给搜索引擎爬虫看的访问协议。它不参与页面渲染,却决定了爬虫能进入哪些目录、抓取哪些内容。配置得当,收录效率提升,服务器压力下降;配置不当,可能误伤整站抓取,或者把后台地址暴露给搜索引擎。理解它的语法逻辑和常见陷阱,比记一堆指令更重要。
robots.txt 必须放置在域名根目录,通常通过 https://域名/robots.txt 即可访问。文件内容按行解析,每行一条指令,由选择器和对应的规则值组成。注释行以井号(#)开头,仅用于说明,不影响执行。
一个最简单的全站放行配置如下:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
这里第二行 Disallow 后没有路径,含义是允许所有爬虫访问。如果写成 Disallow: /,含义则变为禁止访问所有路径,两者差别巨大,写错一行极易引发线上事故。
实际运营中,几乎没有网站会长期使用默认配置。根据业务阶段和内容敏感程度,配置策略需要灵活调整。
网站处于开发中、未正式发布,或正在大规模改版时,需要阻止所有爬虫抓取,此时用一条规则即可:
User-agent: *
Disallow: /
这个配置能快速阻止绝大多数爬虫进入全站目录。但请留意,它无法清除已被搜索引擎收录的旧页面,若此前页面已进索引,仍需要配合其他手段处理快照。
大多数网站只需要精准屏蔽少数几个敏感目录。例如保留 /public/ 目录可抓取,同时屏蔽 /admin/ 与 /user/:
User-agent: *
Disallow: /admin/
Disallow: /user/
Allow: /public/
这里需要记住一个关键点:Allow 指令必须写在同组 Disallow 之后,且仅有部分爬虫支持此指令。如果你的服务器程序无法确认目标爬虫支持 Allow,更安全的选择是只写需要屏蔽的路径,让其余默认放行,避免因 Allow 失效导致误屏蔽。
出于服务器负载或反爬考虑,你可能希望优先照顾 Googlebot,而对其他爬虫收紧限制。此时需要为不同爬虫设立独立的指令组,组间用空行分隔:
User-agent: Googlebot
Disallow: /internal/
User-agent: *
Disallow: /
第一组只针对 Googlebot,屏蔽 /internal/ 目录;第二组覆盖其余所有爬虫,禁止全站抓取。这种做法的好处是,不影响主流搜索引擎对核心内容的收录,同时减少低价值爬虫带来的资源消耗。
即便掌握了语法,配置过程中仍有一些细节常被忽视,值得单独说明。
一个典型的失误案例是:网站有 /api/ 接口目录,开发者在 robots.txt 中写入 Disallow: /api,结果导致所有以 /api 开头的路径,包括 /apiary 页面,全部被屏蔽。正确的写法应该是 Disallow: /api/,保留尾部斜杠以精确锁定目录。
写好 robots.txt 后,不要直接上线就认为万事大吉。建议按以下顺序逐项检查,确认结果符合预期。
检查过程中,如果发现某个页面明明规则允许抓取,却始终不进索引,原因可能出在页面本身的 meta robots 标签或 HTTP 响应头上,此时需要从文件层面之外寻找问题。
不能。robots.txt 只是限制爬虫的抓取行为,对已在搜索引擎索引库中的链接没有作用。如果某个页面已经被谷歌或百度收录,即使之后在 robots.txt 中添加了屏蔽规则,旧链接仍可能在搜索结果中保留一段时间,只是点击后无法访问。彻底移除已收录页面,需要使用站长平台的索引移除请求。
当然可以。文件中允许按段落为不同爬虫分别配置规则,比如先写 Googlebot 的规则,空一行后写百度蜘蛛的规则,再空一行写针对所有爬虫的通用规则。爬虫只会依据与自身匹配的第一段规则执行,因此特定爬虫的段落应放在通用段落之前。
两者含义完全相反。Disallow: 为空时,表示没有任何路径被禁止,即允许爬虫访问全站;而 Disallow: / 表示禁止访问所有路径。一字之差,前者放行全部,后者屏蔽全部,实际配置时务必看清,防止把线上站误设为屏蔽状态。
robots.txt 的配置核心在于理解前缀匹配、区分大小写以及指令兼容性三大要点。日常使用中,建议遵循最小权限原则:只屏蔽必要的敏感目录,不把全站规则写得过多过杂;对不同爬虫谨慎使用差异化策略;每次修改后都要通过站长工具验证生效结果。遇到页面无法抓取时,先检查文件本身,再排查 meta 标签与响应头,才能精准定位问题。把这份基础配置做好,网站的收录质量和服务器稳定性都会得到明显保障。