网站收录

robots.txt、noindex、nofollow 各管一段:别让指令互相打架

robots.txt 管抓取、noindex 管收录、nofollow 管链接,三者常被混为一谈。本文拆开讲清各自的作用边界,列出几种容易互相抵消的组合,并给出一套从上到下核对指令是否生效的排查顺序。

网站收录

robots.txt、noindex、nofollow 各管一段:别让指令互相打架

处理页面收录时,最容易被混在一起的三件事是:让不让蜘蛛来抓、抓到了要不要进索引、页面上的链接要不要跟着走。这三个问题分别由 robots.txt、noindex 和 nofollow 来回答。写错一行,结果常常和预期相反。

三条指令各管一段

robots.txt:管抓取,不管收录

robots.txt 放在站点根目录,告诉蜘蛛哪些路径可以抓。它拦的是“来不来”,不是“进不进索引”。一个被 robots.txt 屏蔽的 URL,如果别处有链接指向它,仍然可能以只有 URL、没有摘要的形式出现在索引里。想让它彻底不进索引,屏蔽之外还得配合 noindex;但要注意,被屏蔽的页面蜘蛛抓不到,页面里的 noindex 也就读不到。这两条指令是需要配合的一对,不是互相替代。

noindex:管收录,不管抓取

noindex 写在页面里,表达的是“可以抓,但别放进索引”。它必须靠蜘蛛真正抓到页面才能生效,所以它无法解决“不希望蜘蛛来”的问题,那是 robots.txt 的活。

nofollow:管链接

nofollow 写在链接标签上,表示这条链接不背书。它影响的是链接信号的传递,不是目标页面能不能被抓到。很多蜘蛛仍然会顺着 nofollow 链接发现新 URL,只是传递的价值不同。想靠 nofollow 让一个页面不被发现,通常达不到目的。

几种容易打架的组合

  • robots.txt 屏蔽加页面里写 noindex:noindex 读不到,页面仍可能以裸 URL 出现在索引中。
  • noindex 加 canonical 指向别处:两个信号方向不一致。既然已经 noindex,canonical 指向自己通常就够了,不必再对外声明归并。
  • nofollow 加希望被收录:nofollow 不会阻止收录;但如果全站内链都加了 nofollow,蜘蛛发现新页面的速度会变慢。
  • 只在 robots.txt 里屏蔽 PDF、图片等非 HTML 文件:这类文件没有 head 区,无法用 meta 标签控制,需要用响应头里的 X-Robots-Tag。

写法上的几个注意点

meta 标签的写法是 name 为 robots,content 为 noindex;如果要针对特定蜘蛛,把 robots 换成对应的名称。X-Robots-Tag 写在 HTTP 响应头里,对 PDF、图片、视频同样有效,是控制非 HTML 文件的常用方式。

  • noindex 后面不要随手再加 follow 或 nofollow,除非你确实想表达“别收录这些内容,但可以顺着链接走”。
  • 指令要放在模板能稳定输出的位置。被缓存、被条件渲染漏掉,就会出现“以为写了其实没写”的情况。
  • 用 X-Robots-Tag 控制时,确认它出现在真实响应头里,而不是只写在本地配置文件中。

临时下架与永久移除

如果只是短期不想让人看到,用 noindex 加保留抓取,之后去掉指令即可恢复;如果是永久移除,robots.txt 屏蔽加 noindex 一起上,并对那些已经进了索引的裸 URL 做处理。反过来,只想减少抓取压力、并不在意收录的路径,屏蔽抓取就够了,不必再加 noindex。

排查顺序

  1. 先在浏览器里查看页面源代码或响应头,确认指令确实输出到了线上。
  2. 再看 robots.txt 是否屏蔽了这条路径。屏蔽了就先解屏蔽,再等重新抓取。
  3. 看看这条 URL 在索引里的状态,是已抓取但未编入索引,还是仍以裸地址出现。
  4. 核对 canonical 与 noindex 的方向是否一致。
  5. 改完之后给蜘蛛留出重新抓取的时间,不要改完当天就下结论。
把抓取、收录、链接三件事分开看,指令才不容易互相抵消。