網站收錄

robots.txt 禁抓與 noindex 禁收錄:两個開關別按反了

robots.txt 的 Disallow 和頁面里的 noindex 经常被当成同一件事来用,结果是想屏蔽的頁面還在索引里,想收錄的頁面反而抓不到。這篇文章把「禁止抓取」和「禁止收錄」拆開讲,说清两者各作用在哪一环、正确的操作顺序,以及几個容易踩的坑。

網站收錄

robots.txt 禁抓與 noindex 禁收錄:两個開關別按反了

在日常處理站点时,有一類問题反复出現:頁面明明在 robots.txt 里被 Disallow 了,搜尋里却還能搜到它;或者反過来,頁面加了 noindex,蜘蛛却依舊天天来抓,服務器日誌里一片热闹。這两種情况看起来矛盾,其實都源于把「禁止抓取」和「禁止收錄」当成了同一件事。

两個開關各管一段路

要理清這件事,先把頁面進索引的過程拆開看:蜘蛛先發現 URL,然後去抓取頁面内容,讀到内容里的指令,最後决定要不要放進索引。整個過程是顺序的。

  • robots.txt 的 Disallow:作用在「抓取」這一步。它告诉蜘蛛不要来取這個 URL 的内容。但蜘蛛並没有因此把這個地址忘掉——它仍然知道這個 URL 存在。
  • noindex:作用在「收錄」這一步。它寫在頁面里(meta 标簽)或响應头里(X-Robots-Tag),蜘蛛必须先抓到頁面才能讀到它。

顺序决定了一個很關键的结论:如果 robots.txt 把頁面挡住了,蜘蛛就抓不到頁面,自然也就讀不到頁面里的 noindex。于是這個頁面既没被抓,也没被标记 noindex,只是被挡在门外。搜尋引擎手里只剩一個光秃秃的 URL 和一堆指向它的連結,索引里那條记錄就很可能繼續留着。

想让它彻底消失,顺序要對

如果目标是不让某個頁面出現在搜尋结果里,比較稳的做法是:

  1. 先確認頁面可以被抓取,robots.txt 里没有拦它;
  2. 在頁面上加 noindex(或用 X-Robots-Tag);
  3. 等蜘蛛重新抓取,確認索引里的记錄消失;
  4. 记錄确實没了之後,再考虑要不要用 robots.txt 屏蔽抓取,减少無意义的訪問。

第 4 步是可選的。如果頁面本来就不打算再维護,直接返回 404 或 410 通常更省事,信号也更明确。

几種常见搭配,對号入座

  • 想收錄,却用 Disallow 挡着:這是最容易出错的一種。收錄的前提就是抓取,把想让收錄的頁面挡在门外,只會让它更难被發現。
  • 不想收錄,但希望連結權重繼續流通:用 noindex,follow,別用 Disallow。
  • 临时不想被訪問:比如測試环境,Disallow 可以用,但要清楚代價是這些 URL 可能仍留在索引里。
  • 整站屏蔽:上线前忘了删測試用的 robots.txt,是收錄掉光的经典原因之一。排查收錄問题时先看這一行。
一句话记法:robots.txt 管的是「能不能来拿」,noindex 管的是「拿了之後要不要留」。想让它從索引里消失,得先让它被拿到。

几個容易踩的坑

第一,robots.txt 里的 Disallow 是前缀匹配,寫 /admin 會连带挡住 /admin-tools 這類路径,检查时最好把規則和實际 URL 對一遍。

第二,抓取工具的表現和搜尋引擎不完全一样。用第三方工具測試时,注意它是否遵守 robots.txt,否則你看到的「抓取正常」可能只是工具没拦自己。

第三,搜尋引擎後台里的「已排除」類別很多,被 robots.txt 挡住和被 noindex 排除是两種不同的狀態,看到數字別急着下结论,点進去看具体原因。

第四,noindex 生效需要時間,取决于蜘蛛多久重来一趟。改完之後给一点观察期,別当天看不到變化就反复改文件,来回折腾反而容易把狀態搞乱。

把這两個開關分清之後,很多「明明做了處理却還在索引里」的疑問會自己散掉。真正要记住的其實只有那個顺序:先能抓,再谈不收。