站点运营

站点运营:robots.txt 自查,把允许与禁止的边界写清楚

robots.txt 只约束抓取、不决定收录,但一个字符写错就可能挡住整站入口。本文从文件位置、语法细节、前缀匹配、通配符写法、验证方式到变更留档,给出一份可以照着做的自查清单,帮你在改动前后确认规则是否真的按预期生效。

站点运营

站点运营:robots.txt 自查,把允许与禁止的边界写清楚

robots.txt 是放在站点根目录的一个纯文本文件,大多数时候它安静得像不存在,一旦写错却可能让整站或某个栏目从爬虫的抓取范围里消失。它不负责收录,也不负责排名,只做一件事:告诉爬虫哪些路径可以抓、哪些不要抓。把它当成一份需要定期复核的配置文件来管理,比一次性写完就忘掉要稳妥得多。

先分清它管什么、不管什么

robots.txt 约束的是抓取行为。一个页面被 Disallow 屏蔽后,如果别处有链接指向它,它仍然可能出现在搜索结果里,只是没有摘要和正文内容。反过来,想让页面不进索引,应该用 noindex 或者直接删掉,而不是指望 robots.txt。很多误操作都来自这个误解:用屏蔽代替下架,结果是页面既抓不到也去不掉。

文件本身要逐条核对

  • 位置和文件名:必须是根域名下的 /robots.txt。放在子目录里、带大写、带后缀(比如 robots.txt.html)都不生效。
  • 返回状态:请求时应当是 200,内容类型接近 text/plain。如果 CDN 或 WAF 把它拦成 403、302,或者返回一页 HTML 登录页,爬虫读到的东西和你以为的完全不同。
  • 编码与换行:用 UTF-8,避免从文档编辑器里带进不可见字符。
  • Sitemap 声明:写完整的绝对地址,包括协议和域名,不要用相对路径。

写法细节最容易出岔子

Disallow 是按路径前缀匹配的,不是按目录。写上 Disallow: /news,/newsletter、/news-2024 这类同样以 /news 开头的地址会一起被挡住。想精确匹配某一个目录,可以配合通配符和结尾符号:

  • * 通配符:代表任意字符,适合处理带参数的地址,例如屏蔽带排序参数的列表页。
  • $ 结尾符:表示到此结束,用来限定只匹配某个精确地址,避免顺带屏蔽后面的路径。
  • Allow:在整段 Disallow 里开一个口子,主流爬虫一般按最长匹配优先处理,所以别忘了把需要放行的路径写得更具体。
  • 大小写:路径部分区分大小写,写错大小写等于没写。
  • 不要屏蔽静态资源:CSS、JS、图片目录被挡住,可能影响页面渲染,也让图片搜索看不到你的图。

动手前后各做一次验证

  1. 改之前,把当前文件原样复制一份留底,记录日期和改动原因。
  2. 改完之后,用搜索引擎官方提供的 robots 测试工具,或者直接在服务器上用不同 User-agent 请求一次,确认返回内容确实是新的那份。
  3. 抽几条被屏蔽的地址和几条被放行的地址,实际请求一遍,看结果是否符合预期,尤其注意前缀误伤。
  4. 观察几天访问日志里爬虫的请求路径分布,看被挡的目录是否真的不再被请求,正常目录的抓取量有没有异常波动。

几种常见的误伤场景

  • 从测试环境复制过来的整站 Disallow: /,上线时忘了删。
  • 为了处理筛选参数页,顺手把正常列表页也盖住了。
  • 用 robots 去解决重复内容,其实更适合交给 canonical 或 noindex 处理。
  • 临时屏蔽某个活动页做压测,活动结束后忘了恢复。
robots.txt 的生效存在延迟,爬虫会缓存一段时间,改完不要期待立刻看到变化。如果是紧急下架或临时限流,用 301 跳转或者返回 503 往往更直接。

把它纳入固定的检查节奏

建议在站点改版、更换 CDN、调整目录结构、上线新栏目这几个节点上,都顺手打开 robots.txt 看一眼,并保留修改记录:谁改的、为什么改、涉及哪些路径、什么时候回滚。文件不大,但它站的位置很关键,值得当成一份正式配置来维护,而不是临时文件的收容所。