做站点运营,robots.txt 和 noindex 通常不会天天动,但一旦写错,影响范围往往不是单个页面。它们一个管“能不能抓”,一个管“能不能索引”,很多误伤整站的情况,都来自把这两件事混在一起,或者改完没有验证。
先分清:robots.txt 管抓取,noindex 管索引
robots.txt 是给蜘蛛看的抓取规则文件,放在站点根目录。它告诉蜘蛛哪些路径可以抓、哪些不要抓。但它不是收录开关:如果某个页面被外部链接指向,即使 robots.txt 禁止抓取,搜索引擎仍可能仅凭链接信号把它放进索引,只是没有摘要或快照。
noindex 是页面级的索引指令,通常写在 meta robots 标签或 HTTP 响应头 X-Robots-Tag 里。它表示“这个页面可以抓,但不要放进搜索结果”。两者目的不同,不能互相替代。
一个常见错误:用 robots.txt 屏蔽某个栏目,以为这样页面就不会出现在搜索里。实际上蜘蛛看不到页面上的 noindex,反而可能留下一个没有内容的索引条目。
robots.txt 自查清单
- 是否误屏蔽整站:检查有没有出现 Disallow: / 这类规则。测试环境复制到线上、或者临时调试后忘记删除,都可能导致整站不可抓。
- 是否屏蔽了渲染资源:CSS、JavaScript、图片如果被禁止抓取,蜘蛛可能无法正确理解页面内容和移动端适配。除非有明确原因,一般不建议屏蔽这些目录。
- 规则是否误伤目录:比如想屏蔽 /search/,却写成了 /s,可能连带挡住其他以 s 开头的路径。规则越短,误伤面越大。
- User-agent 分组是否正确:不同蜘蛛用不同分组,写错位置会让规则不生效。如果只想给某类蜘蛛特殊规则,确保它写在对应分组下,而不是全局分组里。
- Sitemap 地址是否有效:robots.txt 里声明的 sitemap 地址要能正常访问,不要指向测试域名或已经改版的旧路径。
- 是否屏蔽了重要栏目:把要参与搜索的栏目、文章目录列出来,逐条对照 robots.txt,确认没有被意外挡住。
noindex 自查清单
- 模板是否全站误加:检查公共模板、CMS 默认设置、安全插件,有没有在所有页面输出 noindex。一个模板变量写错,整站页面都可能被标记。
- meta 与响应头是否冲突:页面里写的是 index,服务器响应头却带 noindex;或者反过来。以更严格的一侧为准,所以两边要一起看。
- 分页、标签、搜索页是否处理合理:这些页面不是不能 noindex,但要先想清楚:它们是希望被索引,还是只服务于站内用户。处理方式应和栏目规划一致。
- 是否和 robots.txt 叠加使用:如果 robots.txt 已经禁止抓取,页面上的 noindex 蜘蛛就看不到。想让页面退出索引,通常应先允许抓取,再让蜘蛛看到 noindex,等索引移除后再考虑是否屏蔽抓取。
- 移除 noindex 后是否验证:去掉 noindex 不等于马上恢复。需要确认页面可抓取、返回正常状态码,并给搜索引擎重新发现和处理的周期。
一个实用的排查顺序
- 先列出清单:哪些页面希望被搜索看到,哪些不希望。没有清单,后面的检查很容易凭感觉。
- 用命令行或浏览器开发者工具查看页面的 HTTP 响应头,确认 X-Robots-Tag 和状态码。
- 查看页面源代码里的 meta robots,和响应头做对照。
- 直接访问 /robots.txt,通读规则,重点看有没有全局屏蔽和路径误伤。
- 结合服务器日志,看蜘蛛实际抓取了哪些路径、返回什么状态。日志比报表更接近真实情况。
- 改动后,用搜索引擎提供的 robots 测试工具或抓取工具验证,再观察一段时间。不要一天内反复改规则。
把改动当成一次小发布
robots.txt 和 noindex 的改动,影响面往往比一篇文章大。建议在测试环境先验证,保留改动记录,知道谁在什么时间改了什么。线上修改前先备份原文件,改完后用无痕窗口和抓取工具各看一遍。
站点运营里的很多问题,不是缺技巧,而是缺一次检查。把 robots.txt 和 noindex 放进定期自查表,花十分钟确认,比事后补救要省事得多。