搜尋抓取

robots.txt 挡住的 URL 還能被索引吗:屏蔽抓取與屏蔽索引的区別與配合

本文從發現、抓取、索引三层拆解 robots.txt 的 Disallow 與頁面 noindex 的区別。被屏蔽抓取的 URL 依然可能被發現,而 noindex 必须被蜘蛛抓到才生效。文中给出三種常见冲突的處理方式和一份可执行的自查流程,避免屏蔽設定用反導致的抓取與索引問题。

搜尋抓取

robots.txt 挡住的 URL 還能被索引吗:屏蔽抓取與屏蔽索引的区別與配合

经常有人問:把某個目錄寫進 robots.txt 的 Disallow,是不是就等于告诉搜尋引擎“這頁不存在”?答案是否定的。屏蔽抓取和屏蔽索引是两件不同的事,用反了,問题比不寫還多。

先把三件事拆開:發現、抓取、索引

搜尋引擎處理一個 URL 大致要经過三步:先通過内鏈、Sitemap、外鏈等渠道知道這個 URL 存在;再决定要不要去抓取頁面内容;最後根據内容判断能不能索引並展示。

  • 發現:拿到的是线索,不涉及頁面内容。
  • 抓取:真正取回 HTML,這一步才看得到頁面里的 meta 标簽。
  • 索引:内容取回之後才可能發生的事。

robots.txt 作用在第二步,noindex 作用在第三步。位置不同,效果自然不同。

robots.txt 的 Disallow:挡抓取,不挡發現

被 Disallow 的 URL,如果站内其他頁面正常連結到它,蜘蛛仍然會把這條連結当作线索记下来。只是它不會去取這個頁面的内容,于是頁面里寫的 noindex,它根本看不到。

Disallow 的常见结果是:URL 被別人發現,但内容長期不更新,搜尋结果顯示一段過时摘要,甚至只剩一個标题。這比直接返回 404 更让人难受。

所以,如果你希望某類頁面彻底從搜尋结果里消失,更稳妥的做法通常是:允许抓取,但在頁面里加 noindex。让蜘蛛進来看到“不要索引”這句话,它才會照做。

什么情况下才该用 Disallow

Disallow 更适合那些“抓了也没用、還占抓取額度”的地址:

  • 後台、登入、购物车、结算流程等不可索引的功能頁。
  • 大量自動生成的篩選參數组合,且没有獨立價值。
  • 临时接口、資料導出地址、站内搜尋结果頁。

這些頁面本来就不需要出現在搜尋结果里,也没必要让蜘蛛反复抓。

nofollow、Sitemap 與 robots.txt 的三種冲突

1. 内鏈加 nofollow,發現路径就變弱

nofollow 不阻止抓取,但會削弱你通過這條連結把發現權传递出去的效果。如果導航、分頁、列表連結都加了 nofollow,新頁面基本只能靠 Sitemap 被發現,速度慢且不稳定。合理做法是:正文、導航、分頁這類结构性連結不加 nofollow。

2. Sitemap 里放着被 Disallow 的 URL

這属于自相矛盾。抓取报告里经常能看到“已被 robots.txt 屏蔽”的提示。整理 Sitemap 时,先把 Disallow 的目錄排除掉,再逐個確認剩余 URL 是否可抓取。

3. 指望蜘蛛池补發現

有些运营者想用蜘蛛池或外部連結去“催”一個被屏蔽的 URL。這條路走不通:屏蔽發生在抓取环节,蜘蛛再多也進不去。蜘蛛池能改變的只是發現速度,改變不了抓取規則。

一份可以照着走的自查流程

  1. 列出想屏蔽的 URL 與目錄,逐個確認目的:是不想被抓,還是不想被索引。
  2. 只想屏蔽索引的,從 robots.txt 中移除,改為頁面級 noindex。
  3. 确實要屏蔽抓取的,同步清理内鏈和 Sitemap 里的對應地址。
  4. 检查 robots.txt 中的通配符與目錄寫法,避免誤伤正常頁面。
  5. 改完後用後台的 robots.txt 測試工具驗證,再观察日誌中蜘蛛對该目錄的訪問是否减少。

最後提醒一句:robots.txt 是建议而非强制,遵守它的主要是主流搜尋引擎。敏感内容不要只靠它保護,该加訪問權限的加權限。