为什么 robots.txt 值得单独盯一眼
robots.txt 是放在站点根目录的一个纯文本文件,作用范围是整站。它不走内容发布流程,改一行、保存、上传,蜘蛛下次来访问时就会按新规则执行。正因为生效快、门槛低,它常常成为临时测试留下的现场:有人为了屏蔽测试目录,把 Disallow: / 写进了正式环境;有人复制模板时忘了改地址,规则里引用的是另一个站点。
更麻烦的是,robots.txt 没有预览功能,写错了也不会有人提醒你。所以比较实际的做法,是把它当成一项配置来管理:改动有记录,上线前有验证,上线后有观察。
几种常见的误封写法
- 用 Disallow: / 屏蔽全站,本意是临时下线或阻止测试抓取,之后忘记删除。
- 误伤目录前缀。例如写 Disallow: /news,本想拦 /news-test,结果把 /newsletter、/news/2024 一并挡掉。
- 规则文件放错位置,比如放在 www 站点下,而实际访问的域名不带 www。
- 用 Disallow 去处理本该删除或改版的页面,页面抓不到,旧记录却可能长期留在索引里。
- 路径大小写、编码与真实 URL 对不上,看似写了规则,实际要么没生效,要么超出预期地生效。
Disallow 和 noindex 不是一回事
这两个工具经常被混用,结果往往是两头落空。Disallow 表达的是“别来抓”,蜘蛛看不到页面内容,自然也读不到页面里的 noindex。如果这个 URL 被别处链接过,搜索引擎仍可能只凭外链信息生成一条记录。
想让页面从索引里退出,主路径是让它可以被抓取,并返回 404 或 410,或者允许抓取后用 noindex 明确表态。robots.txt 更适合用来阻止抓取行为本身,而不是当作内容下线开关。
所以当既不想被频繁抓取、又不想页面长期留着时,需要先判断优先级:先让它被正常访问并读到状态,再逐步调整访问频率。
上线前的自查清单
- 确认文件可访问:浏览器打开“站点域名/robots.txt”,状态码应为 200,返回纯文本,而不是站点的错误页。
- 确认协议与主域:规则里声明的站点地图地址,要与实际使用的 http/https、主域写法一致。
- 逐条读 Disallow 路径:每一条都要能说清挡了什么、为什么挡,说不清的先不加。
- 检查通配符与结尾符:* 匹配任意字符,$ 匹配结尾,滥用会让范围过大或过小。
- 检查是否声明了 Sitemap,方便蜘蛛顺路发现入口。
- 测试环境与生产环境的规则文件分开维护,不要共用同一份。
- 改动留记录:谁改的、改了什么、为什么改、什么时候开始生效。
上线后的观察方式
改完并不算结束。可以从服务器日志里筛出对 /robots.txt 的请求,看状态码是否稳定在 200。出现 404,说明文件缺失;出现 5xx,说明服务器处理这个文件时出了问题。这两种情况都可能让蜘蛛在一段时间内按更保守的方式对待整站。
同时留意被抓取 URL 的分布。原本每天都有稳定抓取的栏目,如果某天开始降到接近于零,不一定是内容出了问题,先回头确认规则文件里有没有把这条路径挡上。反过来,如果日志里频繁出现本该被挡掉的地址,也要检查规则里的路径写法是否与实际 URL 对得上,尤其是带参数或大小写不一致的地址。
把它纳入常规巡检
建议把 robots.txt 与其他基础项放在一起,按月或按版本节点过一遍:文件能否访问、规则有没有新增、站点地图是否有效、日志中的状态码是否正常。规则越少越容易读懂,能用页面状态码和 meta 标签解决的事,就尽量不写进规则文件里。