常见問题

入口頁被 robots.txt 屏蔽後,里面的目标 URL 還會被發現吗?

robots.txt 管的是能不能抓,不是知不知道。入口頁一旦被 Disallow,搜尋蜘蛛通常不會請求它,也就讀不到里面的連結,指向的目标 URL 等于没被引用。本文拆解發現與抓取的区別、三個常见誤解、Disallow 與 noindex 的冲突,以及目标 URL 仍要曝光时该怎么做。

常见問题

入口頁被 robots.txt 屏蔽後,里面的目标 URL 還會被發現吗?

在蜘蛛池和日常站点运营里,robots.txt 往往是最先被讀取的文件之一。不少站長為了“减少抓取、保護入口頁”,直接给入口頁加上 Disallow,结果過了一段時間發現:入口頁里的目标 URL 一條都没動静。問题出在一個容易混淆的地方——robots.txt 管的是“能不能抓”,不是“知不知道”。

一、先把“發現”和“抓取”拆開看

搜尋引擎處理一個 URL,通常是两步:先知道它存在(發現),再實际去請求它(抓取)。

  • 發現渠道:其他頁面的連結、XML sitemap、URL 提交接口、外部連結、重定向等。
  • 抓取许可:由 robots.txt、服務器响應、訪問频率限制等共同决定。

robots.txt 只參與第二环。它不阻止搜尋引擎“知道”某個地址存在,但它能阻止爬虫去把這個地址打開——包括打開入口頁去解析里面的連結。

一個 URL 可以被發現,却長期不被抓取;也可以被允许抓取,却没人知道它存在。入口頁被屏蔽,属于後一種問题的反面。

二、入口頁被 Disallow 之後,實际會怎样

如果入口頁所在的整段路径都被 robots.txt 禁止,主流搜尋蜘蛛通常不會再請求這個頁面。既然頁面没被讀取,里面的連結就不會被解析,指向的目标 URL 也就失去了一條引用来源。

  • 目标 URL 不會因為這個入口頁而被發現,除非它在別處也被連結或提交過。
  • 已经抓取過的目标 URL 不受入口頁屏蔽影响,仍可能保留在索引里。
  • 入口頁自身的收錄狀態會逐步變化,被屏蔽的頁面一般不會正常參與索引。

三、三個很常见的誤解

1. “屏蔽入口頁省抓取,目标 URL 照样會被發現”

不成立。連結寫在爬虫讀不到的頁面里,對爬虫而言就等于不存在。省下来的抓取配額並不會自動轉移到目标 URL 上。

2. “把入口頁寫進 sitemap 就能补回来”

sitemap 只是提交线索。如果该 URL 本身被 robots.txt 禁止抓取,爬虫通常不會為了它破例去請求,所以把被屏蔽的入口頁塞進 sitemap,作用很有限。真正有意义的是把目标 URL 本身提交出去。

3. “Disallow 加 meta noindex 双保險”

這是一個经典冲突:頁面被禁止抓取後,爬虫讀不到頁面里的 meta noindex,noindex 也就無法生效。要让 noindex 起作用,前提是允许抓取。两者混用,往往哪個目标都達不到。

四、确實要屏蔽入口頁时,目标 URL 怎么办

  1. 把指向目标 URL 的連結放到至少一個可抓取的頁面上,保證發現路径不断。
  2. 單獨提交目标 URL,而不是提交被屏蔽的入口頁。
  3. 检查 robots.txt 的路径寫法和通配符,避免誤伤到目标 URL 所在目錄。
  4. 用服務器日誌確認爬虫實际請求了哪些路径,而不是凭感觉判断。

五、怎么驗證規則有没有生效

比較可靠的做法是看日誌:观察搜尋蜘蛛的 UA、請求路径、返回狀態碼。同时確認 robots.txt 本身返回 200 且语法正确;注意部分規則會被缓存,修改後不一定立刻被采用。另外,不同爬虫對 robots.txt 的支持程度不完全一致,規則分组寫得不嚴谨时容易誤伤自己的目标路径。

robots.txt 更像一份约定,它决定了主流搜尋蜘蛛的抓取行為,但不會替你把 URL 传播出去。

六、小结

入口頁被 robots.txt 屏蔽後,里面的目标 URL 基本不會被通過這條鏈路發現。想让目标 URL 持續被看到,關键不是“屏蔽了還能不能發現”,而是保證至少有一條可被爬虫讀取的引用路径,再配合提交和日誌驗證来判断效果。屏蔽入口頁和曝光目标 URL,很多时候是两件互相矛盾的目标,需要先想清楚優先哪一個。