網站收錄

robots.txt 和 noindex 各管一段:拦抓取與拦收錄別用错工具

robots.txt 管的是蜘蛛能不能来抓,noindex 管的是抓到的頁面要不要進索引,两者作用在不同环节。把它們混用,常见结果是頁面没被抓到、却仍以無描述的形式留在搜尋结果里。這篇文章拆開讲两者的分工、容易踩的组合,以及上线前後该怎么自查。

網站收錄

robots.txt 和 noindex 各管一段:拦抓取與拦收錄別用错工具

很多站点在清理頁面时,會同时做两件事:在 robots.txt 里加一條 Disallow,再在頁面上加一個 noindex。看起来是双保險,實际效果往往相反——頁面没被抓取,却可能仍然留在搜尋结果里,展示成一條没有标题描述的空壳。要避免這種情况,先要把這两個工具各自管哪一段分清楚。

两者作用的环节不一样

蜘蛛訪問一個 URL,大致经歷發現、抓取、解析、判断是否入索引几個阶段。robots.txt 和 noindex 分別卡在不同的位置。

  • robots.txt:作用是告诉蜘蛛“這個路径不要来抓”。它在抓取之前生效,蜘蛛看到規則後通常不會請求頁面内容。它本身不表達“不要收錄”的意思。
  • noindex:寫在頁面里(meta 标簽或 HTTP 响應头),只有頁面被真正抓取並解析後才會被讀到。它的意思是“内容可以抓,但不要放進索引”。
  • canonical:解决的是“多個地址指向同一份内容”的問题,属于規范化,和上面两個不是同一類開關。

一句话概括:robots.txt 拦的是抓取,noindex 拦的是收錄。要拦住收錄,前提是頁面得先能被抓到。

最容易踩的几種组合

用 robots.txt 来阻止收錄

這是最常见的誤用。路径被 Disallow 之後,蜘蛛拿不到頁面内容,也就讀不到 noindex。如果這個 URL 之前已经被索引過,或者有足够多的外鏈指向它,它有可能繼續留在索引里,只是展示信息不完整。想让它登出索引,正确做法是先放開抓取,保證 noindex 能被讀到,等頁面從索引里消失後,再决定要不要重新屏蔽抓取。

noindex 頁面同时被 robots.txt 屏蔽

和第上面是同一種問题的另一種表現。两個開關叠加,反而让 noindex 失效。如果确實不想让蜘蛛消耗抓取額度,可以用 X-Robots-Tag 响應头,但要確認蜘蛛能請求到這個响應头所在的那一层。

noindex 與 canonical 指向自己以外

頁面一邊寫 noindex,一邊用 canonical 指向別的地址,两個信号會互相打架。規范的做法是:想让這個地址登出索引,就只留 noindex;想把它合並到另一個地址,就用 canonical,不要額外加 noindex。

把 robots.txt 当成隐私或權限控制

robots.txt 是公開文件,任何訪問者都能讀取,被屏蔽的 URL 也仍然可能出現在其他地方。真正的敏感内容應该放在登入之後,而不是靠 robots.txt 挡住。

處理下架頁面的推荐顺序

  1. 先確認頁面是否還需要被抓取。如果需要退索引,就放開 robots.txt 對该 URL 的屏蔽
  2. 在頁面或响應头中加上 noindex,確認返回的是正常狀態碼,不是 404 或跳轉。
  3. 等頁面從索引中登出,這個過程可能需要數周,具体取决于抓取频率。
  4. 登出之後,如果不想繼續被抓取,再考虑重新加回 Disallow;如果頁面已经刪除,返回 404 或 410 同样能让它逐步登出。
  5. 整個過程中用站点地图的收錄狀態、URL 检查工具或索引报告观察變化,不要凭感觉判断。

上线前後怎么自查

  • 抽查頁面的 HTML 源碼,確認 noindex 出現在正确的位置,且没有被模板條件判断漏掉。
  • 打開 robots.txt,逐條核對 Disallow 的路径是否覆盖了本来打算收錄的目錄。
  • 測試环境加過 noindex、上线後忘了去掉,是批量漏收錄的常见来源,發布流程里最好留一道检查。
  • 對重点頁面做一次抓取视角的驗證,確認蜘蛛拿到的是最终版本,而不是中間层的临时規則。
把抓取和收錄当成两個獨立的開關来管理,比把它們捆在一起更省事。多數“屏蔽了却還在”“没屏蔽却不收錄”的問题,都能在這两個開關的先後顺序里找到原因。

最後提醒一点:無论用哪種方式,索引狀態的更新都需要時間,也不會因為提交了某個指令就立刻生效。定期复查規則的残留,比临时补救更有用。