網站收錄

noindex 與 robots.txt 屏蔽:想阻止收錄时该選哪一個

robots.txt 的 Disallow 和頁面里的 noindex 都常被用来阻止收錄,但一個作用于抓取、一個作用于索引。本文說明两者的区別、常见的组合错誤、noindex 生效的前提條件,以及在不同场景下该選哪種方式,並给出上线後的核對方法。

網站收錄

noindex 與 robots.txt 屏蔽:想阻止收錄时该選哪一個

處理不希望被搜尋收錄的頁面时,很多人把 robots.txt 里的 Disallow 和頁面里的 noindex 当成同一件事。两者确實都出現在“阻止收錄”這條鏈路上,但作用的位置不同:一個决定爬虫能不能把内容抓走,一個决定抓到之後要不要放進索引。選错工具,常见的结果是“明明屏蔽了却還搜得到”,或者“屏蔽之後頁面里的指令再也送不出去”。

一個管抓取,一個管索引

Disallow 寫在 robots.txt 里,属于站点級別的约定。它告诉爬虫不要請求某個路径,請求一旦被拦下,頁面内容、HTTP 响應头、正文里的 meta 指令都不會被讀取。

noindex 則寫在頁面响應里,形式上可以是 HTML 里的 meta robots 标簽,也可以是 HTTP 响應头里的 X-Robots-Tag。它不阻止抓取,只是表達“這個 URL 可以抓,但不要放進索引”。

關键在于顺序:noindex 要先被讀到才有效,而讀取的前提是頁面被抓取。所以两者不是两把同时落下的鎖,而是鏈路上前後相邻的两個环节,混用容易出現互相抵消。

几種常见的组合错誤

  • robots.txt 屏蔽叠加頁面 noindex:屏蔽生效後爬虫不再抓取该頁面,自然也看不到 noindex。结果是頁面可能長期留在索引里,或者只保留一個没有摘要的 URL 條目。
  • 用 robots.txt 應付單頁面的索引問题:整站屏蔽范围過大,會连带影响正常頁面被抓取,恢复後還需要等待重新抓取。
  • noindex 與 canonical 指向互相矛盾:一邊声明頁面不该進索引,一邊又把它当作規范版本,信号冲突时判断结果很难预测。
  • 顺手屏蔽了 CSS、JS 资源目錄:样式和脚本抓不到,頁面渲染會受影响,正文内容可能無法被完整讀取。

noindex 生效需要满足的前提

  1. 頁面能正常抓取,返回 200,没有被 robots.txt 拦住;
  2. meta 指令位于 head 中且能被解析,不要依赖頁面加载後由脚本延迟寫入;
  3. PDF、图片、视频等非 HTML 文件寫不了 meta 标簽,需要用 X-Robots-Tag 响應头承载指令;
  4. 指令之間没有冲突,例如同一個頁面同时出現 index 與 noindex。

不同场景下怎么選

  • 临时不想让爬虫消耗抓取額度,或整站维護期間,用 robots.txt;
  • 某個頁面確認要留在站内供用戶訪問,但不希望出現在搜尋结果里,用 noindex;
  • 測試环境、後台入口這類本就不该被抓的路径,用 robots.txt;
  • 參數頁、篩選頁如果不希望被索引,但仍想让連結被繼續跟随,可以寫成 noindex, follow。

上线之後怎么核對

配置完成後,先用抓取工具請求目标 URL,查看返回的狀態碼、响應头和 HTML 源碼,確認指令确實送達,而不是被缓存或前端改寫。過一段時間,再用站内搜尋或站長工具里的覆盖率报告复查,看這些 URL 是否已從索引中消失。移除並不是即时的,节奏取决于搜尋引擎重新抓取该頁面的時間。

提醒:robots.txt 和 noindex 都只是表達意愿的方式,最终是否收錄由搜尋引擎自行判断。發現頁面仍出現在结果里时,先確認指令有没有被真正讀到,再判断是等待時間不够,還是配置本身寫错了。

把两者分清之後,判断成本會低很多:先問自己是“不想被抓”還是“不想被索引”,再决定寫下哪一條規則。顺序理清了,绝大多數“屏蔽無效”的困惑都能找到對應的原因。