在搭建蜘蛛池或维護入口頁时,很多人會用 robots.txt 控制搜尋蜘蛛的抓取范围。一個常见疑問是:如果入口頁本身被 robots.txt 里的 Disallow 挡住了,這個頁面里指向目标 URL 的連結,搜尋蜘蛛還會不會跟過去?
先区分“抓取”和“索引”
robots.txt 管的是抓取,不是索引。它告诉搜尋蜘蛛“這個目錄或這個頁面不要来抓内容”,但並不會自動把頁面從搜尋结果里删掉。所以被 Disallow 的入口頁,仍可能因為外部連結等原因出現在搜尋结果中,只是展示的信息不完整。
被屏蔽的入口頁,連結基本不會被發現
搜尋蜘蛛發現新 URL 的主要方式,是把已经抓取到的頁面里的連結解析出来。如果入口頁因為 robots.txt 無法被抓取,頁面内容就進入不了這個解析流程,里面的連結也就無從获取。換句话说,用 robots.txt 屏蔽入口頁,等于同时切断了通過這個頁面發現目标 URL 的通道。
需要說明的是,這里说的是“通常”。搜尋引擎偶尔會通過其它渠道拿到連結,比如其它未被屏蔽的頁面、外部連結、sitemap、URL 提交接口等,但這些都不是這個入口頁的功劳。
什么时候适合屏蔽入口頁
如果入口頁本身没有實际内容,只是给蜘蛛看的連結集合,而且已经有 sitemap 覆盖了同样的目标 URL,那么用 robots.txt 屏蔽可以省下抓取配額,把抓取机會留给真正需要被收錄的頁面。反過来,如果目标 URL 目前只能靠這個入口頁被發現,就不要屏蔽它。
如果确實需要屏蔽,還有哪些替代路径
- sitemap:把目标 URL 直接寫進 sitemap,並通過站点管理工具提交,不依赖入口頁連結。
- URL 提交接口:對重点地址手動或通過接口提交,适合數量不多、優先級高的 URL。
- 保留一個未被屏蔽的入口頁:把需要被發現的目标連結放到不受 Disallow 影响的路由下。
- 可被抓取的外部連結:從站内其它可抓頁面或站外頁面指向目标 URL。
排查顺序
- 打開 robots.txt,確認 Disallow 的路径是否真的覆盖了入口頁地址,注意通配符和目錄寫法的差异。
- 用搜尋引擎官方提供的 robots.txt 測試工具,驗證该入口頁是否被判定為禁止抓取。
- 查看服務器日誌里搜尋蜘蛛最近是否訪問過這個入口頁。如果長期没有訪問记錄,說明屏蔽确實生效了。
- 再確認目标 URL 本身没有被 robots.txt、noindex、登入限制或 WAF 單獨挡住,避免排查方向跑偏。
- 改用 sitemap 或其它入口頁之後,繼續观察日誌中目标 URL 是否出現訪問记錄。
几個容易混淆的点
第一,robots.txt 里寫 Disallow 和给頁面加 noindex 是两回事,後者需要搜尋蜘蛛先抓取到頁面才能讀到。第二,屏蔽入口頁不會“通知”搜尋引擎去刪除已有索引,两者不能互相替代。第三,蜘蛛池里入口頁數量多不代表發現效率高,如果大部分入口頁都處在無法被抓取的狀態,連結再多也不會被解析。
把入口頁屏蔽掉,却指望它繼續帮忙發現目标 URL,方向本身就是矛盾的。要么放開抓取,要么把發現任務交给 sitemap 和 URL 提交這類不依赖頁面抓取的渠道。