搜尋抓取

noindex 頁面還在被抓:robots meta 在抓取阶段到底管什么

noindex 经常被当成阻止蜘蛛抓取的開關,但它只作用于索引阶段。蜘蛛必须先抓取頁面才能讀到指令,因此 noindex 頁面仍可能出現在日誌里。本文梳理 noindex、nofollow、robots.txt 和 X-Robots-Tag 的分工,說明常见誤用與检查方法。

搜尋抓取

noindex 頁面還在被抓:robots meta 在抓取阶段到底管什么

很多人把 noindex 当成“別让蜘蛛来”的開關,结果在日誌里看到這些 URL 仍被反复抓取,就觉得指令失效了。實际上,noindex 管的是索引,不是抓取。

蜘蛛必须先抓到,才能讀到 noindex

noindex 寫在頁面 HTML 的 meta 标簽或 HTTP 响應头里。蜘蛛只有實际請求了這個 URL、拿到响應,才知道頁面寫了什么。因此,只要頁面還有内鏈、Sitemap 或其他入口,它就可能繼續出現在抓取日誌里。抓取和索引是两件事:抓取是把内容取回来,索引是决定要不要放進可检索的集合。

想拦住抓取,要用 robots.txt;想拦住索引,要用 noindex。两者混用常常互相打脸。

noindex 和 robots.txt 的配合顺序

如果先用 robots.txt 屏蔽某個目錄,蜘蛛就不會去請求里面的頁面,自然也讀不到頁面上的 noindex。此时如果外部還有連結指向這些 URL,搜尋引擎可能僅凭外鏈信息把它們放進索引,通常没有摘要,反而更难處理。

  • 希望 URL 彻底不被抓取、也不在结果里出現:robots.txt 拦截可以做到,但要接受“讀不到 noindex”的副作用。
  • 希望頁面被抓到、確認内容後登出索引:放行抓取,加 noindex。
  • 大量低质篩選頁、參數頁:優先用内鏈和 Sitemap 控制發現范围,再考虑 noindex,不要一律封 robots.txt。

nofollow 只是連結級別的提示

nofollow 通常加在連結上,表示“這個連結的目标我不背书”。它的作用是提示,不是硬性阻止。蜘蛛仍可能顺着連結發現 URL,只是不會把它当作信任投票。nofollow 不會阻止目标頁面被抓取,也不會替代目标頁面的 noindex。

如果某頁面需要保留抓取、但不想让它传递信号,可以组合使用:連結加 nofollow,目标頁加 noindex,两者各管一段。

非 HTML 资源的指令走 HTTP 头

對 PDF、图片、视频這類文件,HTML 里的 meta 标簽用不上,需要在响應头加 X-Robots-Tag。寫法與 meta 類似,只是放在服務器配置里。很多站点只改了模板,忘了這些资源,導致原本想排除的文件仍被索引。

常见誤用與检查方法

  • 用 robots.txt 挡 noindex:蜘蛛讀不到指令,URL 可能以無摘要形式留在结果里。
  • 用 noindex 挡抓取:抓取不會停,只是内容不進索引,抓取预算照样被消耗。
  • noindex 頁面還放在 Sitemap 里:等于主動告诉蜘蛛“来抓我,但別索引”,一般没必要,除非短期過渡。
  • 只改模板不核對响應头:JS 渲染、CDN 缓存都可能让實际返回的 meta 與预期不同。

检查时可以先看服務器日誌里這些 URL 的請求频率有没有下降,再對照抓取統計和索引覆盖报告。如果 noindex 生效,抓取量通常會在一段時間後逐步回落;若長期不降,多半是内鏈或 Sitemap 還在持續供给入口。

把指令用在合适的位置

抓取阶段考虑的是“蜘蛛来不来、来多少”,索引阶段考虑的是“来了之後留不留”。noindex 适合後者,robots.txt 适合前者,nofollow 處理連結關系。先想清楚目标,再决定用哪個工具,比把三種指令堆在一起更有效。