在搜尋抓取相關的讨论里,有一類問题出現频率很高:某些頁面明明不希望被收錄,也加了 noindex,過一阵子看日誌,蜘蛛還是天天来;反過来,有些路径寫進了 robots.txt 的 Disallow,结果頁面狀態比预期复杂得多。這两種情况其實指向同一個前提——抓取和收錄是两條獨立的线,把它們当成一件事,策略就很容易寫拧。
一、蜘蛛先抓取,再决定要不要收錄
搜尋引擎處理一個 URL 通常分两步:先抓取,拿到内容;再根據内容本身、meta robots、响應头里的 X-Robots-Tag 等信号,判断是否進入索引、是否參與展示。抓取在前面,收錄在後面。理解這個顺序,很多看似矛盾的現象就说得通了。
這也解释了 noindex 頁面為什么會持續产生抓取量:只要這個 URL 還能被蜘蛛發現(内鏈、外鏈、Sitemap、歷史记錄都算),又没有在抓取层被挡住,它就會進入抓取队列。noindex 表達的是“別收錄”,不是“別来”。
二、Disallow 與 noindex 各自管什么
- robots.txt 的 Disallow:管抓取。被禁止的路径,蜘蛛通常不會發起請求,也就拿不到頁面内容。
- meta robots 的 noindex:管收錄。頁面必须能被抓到,這個信号才有机會被讀到。
- 响應头 X-Robots-Tag:同样管收錄,優势是不用改頁面模板,适合 PDF、图片或由後端统一輸出头部的场景。
三者是分工關系,不是可以互相替代的關系。關键看你想達成什么结果,而不是哪個“更狠”。
三、容易出問题的几種组合
- 用 Disallow 挡住一個目錄,同时指望目錄内頁面的 noindex 生效。蜘蛛抓不到頁面,就讀不到 noindex;如果這些 URL 之前已经進過索引,反而可能缺少更新信号。
- 给聚合頁、标簽頁加 noindex,却仍让它們铺满導航和分頁。抓取會被节省吗?不一定,蜘蛛依舊會反复訪問這些 URL,只是不收錄,抓取资源照样消耗。
- 整站或大目錄 Disallow,同时又用 Sitemap 提交同一批 URL。Sitemap 是“建议来看看”,robots 是“別来”,两個信号互相打架。
- 改版时舊目錄 301 到新目錄,但 robots.txt 里還留着舊目錄的 Disallow。重定向寫得再規范,蜘蛛也走不到那一步。
- 把 noindex 当成临时下线手段,先加 noindex 又保留 200 狀態和正常内鏈。頁面對蜘蛛仍然是“活着”的,抓取不會停。
四、让抓取量花在有用的 URL 上
如果目标只是减少無意义頁面的抓取消耗,比“用 Disallow 還是 noindex”更值得先做的是:判断這個 URL 到底有没有必要存在。顺序大致是這样:
- 站内搜尋结果頁、带會话 ID 的地址、排序與篩選參數頁,優先做 URL 归一化、收敛入口或限制可選參數,而不是整批丢给 noindex 了事。
- 确實要保留、但不希望收錄的頁面(歷史归档、狀態頁、活動頁存根),保留抓取並加 noindex,同时减少它在内鏈中被重复暴露的次數。
- 既不希望抓取、也不希望引用的路径(後台、測試目錄、内部接口),用 Disallow 隔開,並確認没有外鏈指向它們。
- 已经确定下线的頁面,按情况用 301 或 410 處理,而不是留一個内容為空的 200 頁面繼續參與抓取。
還有一個容易被忽略的点:URL 發現和抓取执行不是同一件事。一個 URL 被發現了,未必马上被抓;抓了,也未必收錄。所以判断效果时,要把“是否被抓”“是否被收錄”“是否带来訪問”三個問题分開看,混在一起只會得出模糊结论。
五、上线前後的检查顺序
上线前,把 robots.txt、頁面 meta、响應头、Sitemap 這四份信号放在一起對一遍,確認没有互相冲突的地方,尤其是目錄級別的規則要覆盖到具体路径。上线後,用服務器日誌和抓取統計核對實际行為:哪些路径在被反复請求、哪些一直没動静、noindex 頁面是不是仍在高频出現。
不要只盯着抓取量下降。真正要控制的是浪費——那些既不會收錄、也不带来訪問、却持續占用抓取资源的 URL。
最後提醒一句:robots.txt 是公開文件,寫在里面的路径相当于對外說明。真要隔离的目錄,除了 Disallow,更该做的是訪問控制。抓取策略解决的是搜尋引擎怎么走,訪問控制解决的是谁能進,两者不能互相替代。