当搜索引擎的爬虫光临一个网站时,它通常会先在根目录下查找 robots.txt 这个文件。这个纯文本文件就像一张"抓取许可地图",向爬虫清楚地标注出网站哪些区域可以探索并进入索引,哪些区域需要绕行。配置得当,不仅能防止后台管理页、临时测试环境等敏感内容出现在搜索结果中,还能将服务器有限的抓取预算集中到真正有价值的页面上,对提升站点整体收录效率有明显帮助。
robots.txt 文件必须放置在网站根目录下,例如 https://yourdomain.com/robots.txt。文件需以 UTF-8 编码保存,每行只能包含一条指令,且路径是区分大小写的,任何一个字母的大小写写错,都可能导致整条规则失效。
一份标准的 robots.txt 通常由下面几个关键字段组成:
以下是一个常见的配置范例:
User-agent: *
Disallow: /private/
Allow: /private/shared/
Sitemap: https://yourdomain.com/sitemap.xml
此配置的含义是:对所有爬虫开放站点,但 /private/ 目录整体禁止抓取,唯独其中 /shared/ 这个子目录可以获得收录许可。需要留意的是,并非所有爬虫都认识 Allow 指令,当遇到不支持的引擎时,限制更严格的 Disallow 规则仍然会生效。
对于依赖内容收录来获取流量的新站或资讯媒体,站长的通常诉求是请爬虫尽量多抓页面,此时只需要写下空白的 Disallow 即可:
User-agent: *
Disallow:
其实,省略 Disallow 这一行也能达到完全相同的效果。这里有一个常见的坑:千万别误将 Disallow 的值写成 /,一旦出现这行代码,所有爬虫都会停止访问,站点收录会立刻中断,排查起来也会耗费不少精力。另外,建议在文件末尾一并声明 Sitemap 地址,这样能帮助爬虫更高效地发现网站新增的内容。
如果出于服务器带宽分配或数据隐私的考虑,不希望某个搜索引擎抓取网站,可以针对该爬虫单独编写规则:
User-agent: Baiduspider
Disallow: /
这条规则只作用于百度的爬虫,Google、Bing 等其他搜索引擎的抓取行为不受任何影响。在编写此类规则前,务必去各引擎的官方文档中核对爬虫的准确名称——常见的包括 Baiduspider、Googlebot、bingbot 等,如果名称写错,规则就会变成一纸空文,无法起到任何约束作用。同样的逻辑也适用于拦截某些采集工具或产生大量无效流量的爬虫。
在实际操作中,不少站长会掉进下面这些陷阱里:
判断配置是否有效,可以借助搜索引擎的抓取测试工具进行验证,或者直接在浏览器里访问 robots.txt 文件检查内容是否正确输出。
如果配置成 Disallow: /,搜索引擎收到指令后会逐步停止抓取站内所有页面,已经收录的页面也会在后续的索引更新中被移除,相当于整站从搜索结果中被"下架",后果非常严重。好在这个问题可以通过修正配置并提交重新抓取来恢复。
对于 Google 等支持 Allow 指令的引擎,匹配路径长度更长的那条规则优先。也就是说,在 Disallow 了父目录的前提下,如果 Allow 指定了更长的具体子路径,那么这个子路径会被允许抓取。但其他不识别 Allow 的引擎会直接执行 Disallow 规则。
并不是必须的。Sitemap 行只是给爬虫提供一条发现新页面的补充通道,即使不写,搜索引擎也能通过链接爬取的方式发现内容。不过对于新站或页面更新频繁的站点,加上这行声明通常能加快新内容的收录速度。
robots.txt 的配置并不复杂,但一个字符的失误就可能带来整站收录的严重波动。建议在文件上线前仔细检查每一行内容和路径大小写,有条件的话先用搜索引擎官方的测试工具做一遍验证。同时要牢记,这个文件只能控制爬虫的行为,无法替代真正的安全防护。通过清晰的抓取边界设定,你的网站可以更高效地利用有限的抓取资源,把抓取和索引的注意力集中在最有价值的内容上,从而实现更好的搜索表现。