網站收錄

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. 改完之後给蜘蛛留出重新抓取的時間,不要改完当天就下结论。
把抓取、收錄、連結三件事分開看,指令才不容易互相抵消。