常见問题

入口頁或目标 URL 被 robots.txt 屏蔽,搜尋蜘蛛還能發現連結吗

robots.txt 寫错是蜘蛛池里很常见的坑。入口頁被 Disallow,連結就失去被發現的机會;只挡目标 URL,發現照舊但收錄受阻。本文区分這两種情况,给出用日誌和抓取測試定位問题的顺序,並列出几個容易忽略的细节。

常见問题

入口頁或目标 URL 被 robots.txt 屏蔽,搜尋蜘蛛還能發現連結吗

用 robots.txt 做抓取控制,是蜘蛛池和普通站点都會遇到的一步。但很多人把「禁止抓取」和「禁止收錄」当成同一件事,结果入口頁里的連結要么压根没被發現,要么被發現了却怎么也進不了库。下面按几種常见寫法分別說明。

先分清抓取许可和索引许可

robots.txt 管的是能不能来抓,meta robots 和 X-Robots-Tag 管的是抓到之後能不能入库。搜尋蜘蛛在請求一個 URL 之前,會先去讀该域名根目錄的 robots.txt;如果目标路径被 Disallow,它通常不會去請求這個頁面,自然也就看不到頁面里的連結。

所以判断影响时,先問一句:被禁止的到底是入口頁本身,還是入口頁指向的目标 URL。這两種情况的结果完全不同。

情况一:入口頁被 Disallow

如果入口頁的路径寫在 Disallow 里,搜尋蜘蛛不會去抓這個入口頁。頁面里的連結再規整,也不會因為這次抓取而暴露。入口頁上已经存在的老連結,只能靠其他渠道,比如 sitemap、外鏈、其他站点的轉载,被重新發現。

實际表現通常是:入口頁在日誌里几乎看不到蜘蛛請求,或者只剩零星尝试;目标 URL 的發現速度明顯變慢,甚至長期没有新增。

容易踩的寫法

  • Disallow 寫成斜杠加星号,一刀切挡住整站,入口頁和目标頁一起失效。
  • 用通配符或後缀匹配时范围寫大了,本来只想挡一個目錄,结果把相邻路径也盖進去。
  • 给不同搜尋引擎的蜘蛛分別寫了規則,某一段寫错但没检查,只有部分蜘蛛被放行。

情况二:只 Disallow 目标 URL

入口頁没被挡,搜尋蜘蛛照常抓入口頁,也能顺着連結發現目标 URL。但由于目标 URL 本身被 Disallow,蜘蛛不會去請求它,頁面内容讀不到,也就很难進入索引。

结果就是「URL 被發現了,但没有收錄」。這種情况和入口頁無關,頁面质量、内容、連結结构可能都正常,問题出在目标 URL 自己身上。

怎么区分這两種情况

  1. 查日誌:看入口頁有没有蜘蛛請求记錄。没有,問题在入口頁;有,問题多半在目标 URL。
  2. 看 robots.txt 目前生效的版本,注意 CDN 或反向代理可能缓存了舊文件。
  3. 用抓取測試工具分別测入口頁和目标 URL,看返回的 robots 狀態。
  4. 確認没有同时叠加 meta robots、X-Robots-Tag、登入驗證等其他限制。

几個常被忽略的细节

  • robots.txt 返回 404 和 500 含义不同:404 一般视為没有限制;服務端错誤則可能让部分蜘蛛保守處理,短時間内减少抓取。
  • robots.txt 本身也會被缓存:改完不生效,先確認 CDN 和服務器上的文件是不是最新。
  • Disallow 不等于刪除:已经被收錄的 URL,僅靠 robots.txt 不會让它從结果里消失,反而可能因為抓不到内容而保留舊快照。
  • 一個入口被挡不代表全部失效:如果你有多個入口分散在不同路径,被挡的那一個失效,其余入口依然可能被發現,別把單個入口的表現当成整体结论。
简單记:入口頁被挡,是發現环节断了;目标 URL 被挡,是發現還在、收錄环节断了。排查时先定位断在哪一环,再决定是改 robots.txt、換入口路径,還是處理目标 URL 自身的問题。

最後提醒一句,robots.txt 是建议性协议,各家蜘蛛的执行细节、缓存時間、错誤處理都有差异,不要指望一次修改立刻见效。改完之後观察一段時間日誌,看請求是否恢复,再判断下一步。