蜘蛛池知识

蜘蛛池入口页的 robots 设置:哪些写法会把已经铺好的路堵死

robots.txt、meta robots 和 X-Robots-Tag 三个控制点,在蜘蛛池里各自管什么、容易在哪里出错。文章梳理了 noindex、nofollow、canonical 用在入口页上的实际影响,列了常见误用清单,并给出一个从上到下的检查顺序,帮助你在改动前先确认影响范围。

蜘蛛池知识

蜘蛛池入口页的 robots 设置:哪些写法会把已经铺好的路堵死

入口页铺出去以后,能不能被蜘蛛正常访问、能不能沿着链接继续往下走,很大程度上取决于和 robots 相关的几条指令。它们写的地方很短,但一旦写错,前面在域名、主机、内容上的投入都可能白费。下面把 robots.txt、meta robots、X-Robots-Tag 三个控制点在蜘蛛池场景下的用法和误用理一遍。

三个控制点,作用范围完全不同

很多人把它们当成一件事,其实层级差别很大:

  • robots.txt 是站点级文件,管的是“蜘蛛能不能抓”,对所有入口页统一生效。
  • meta robots 写在 HTML 里,管的是“抓到之后怎么处理”,必须先能抓取到页面才能读到。
  • X-Robots-Tag 写在 HTTP 响应头里,对非 HTML 文件同样有效,也最容易被忽略。

robots.txt:最容易一刀切的地方

Disallow 阻止的是抓取行为。这里有个经典冲突:如果入口页被 Disallow,蜘蛛就读不到页面里的 noindex,结果是页面可能仍然出现在索引里,只是缺少描述。想用 noindex 让页面退出索引,前提是允许抓取。

另外两个容易翻车的地方是通配符和路径匹配。写 Disallow: /entry 时,/entry-2、/entry-page 之类的路径可能被一起挡掉;路径匹配对大小写敏感,复制粘贴时改了大小写就会失效。如果同一台主机上放了多批入口页或不止一个站点,改 robots.txt 前先确认它到底影响哪几个目录。

meta robots:noindex 和 nofollow 用在入口页意味着什么

入口页的作用是被索引、并把抓取引向目标页。加上 noindex,入口页本身进不了索引;爬虫通常仍会继续跟随页面里的链接,但入口页作为“入口”的价值就没了。加上 nofollow,则等于把链接传递的路径直接切断,蜘蛛被引到门口又被送走。

canonical 是另一种常被忽略的写法。如果入口页的 canonical 指向目标页,等于告诉搜索引擎“这个页面不是独立内容”,入口页会被合并处理,前面的布置也就失去意义。入口页的 canonical 一般指向自身即可。

X-Robots-Tag:藏在响应头里的开关

有些环境会在 CDN、反向代理或统一配置层加上 X-Robots-Tag: noindex。这种设置不在模板里,改页面时看不出来,排查时也容易漏。批量检查时可以用 curl -I 或响应头工具,把一批入口页的头部拉出来看一遍,确认没有多余的标签。

常见误用清单

  • 把测试环境的 robots.txt 直接复制到生产入口页,Disallow 一并带过去。
  • 入口页和承接页共用一套模板,nofollow 被一起继承下来。
  • 想“先藏起来”,结果 noindex 一直没去掉,入口页长期不进索引。
  • 一边用 robots.txt 挡爬虫,一边指望它读到页面里的 noindex。
  • 通配符写得太宽,把目标页所在目录也一起挡了。

一个可执行的检查顺序

  1. 取一批入口页 URL,先看 robots.txt 是否允许访问,把通配符展开后的实际匹配逐条核对。
  2. 拉响应头,确认没有额外的 X-Robots-Tag。
  3. 查看 HTML 里的 meta robots,确认没有 noindex、nofollow、none。
  4. 检查 canonical 是否指向自身或正确的入口页地址。
  5. 在服务器日志里确认蜘蛛真的访问到了入口页,而不是只请求了 robots.txt 就离开。
robots 类设置的改动成本很低,影响面却很大。改之前先拿小批量入口页跑一遍,观察几天日志,再决定要不要全量推送。

最后提醒一句:入口页的 robots 配置不是一次设完就不管的事。模板更新、迁移主机、接入 CDN 都可能悄悄改掉这些设置。把上面五步做成一份固定清单,在每次批量投放前过一遍,比事后从日志里反查要省事得多。