做入口頁时经常遇到一個矛盾:這個頁面本身不想被收錄,但又希望搜尋蜘蛛顺着它去發現目标 URL。于是有人给入口頁加 robots.txt 屏蔽,或者加 noindex,然後發現目标 URL 迟迟没有動静。問题往往不在“屏蔽”本身,而在于屏蔽方式决定了搜尋蜘蛛能不能讀到頁面里的連結。
先分清三種“屏蔽”,作用完全不同
- robots.txt 里的 Disallow:禁止搜尋蜘蛛抓取指定 URL 或目錄。被禁止的地址,爬虫通常不會去請求,自然也讀不到頁面 HTML。
- meta robots 的 noindex:允许抓取、允许解析連結,只是不希望這個頁面出現在搜尋结果里。
- nofollow(連結級或頁面級):表達“不传递權重、不背书”的意思,但對是否繼續發現連結,各搜尋引擎處理並不一致,不能当作可靠的發現通道。
入口頁被 robots.txt 屏蔽後會怎样
如果入口頁 URL 或它所在的目錄被 Disallow,搜尋蜘蛛通常不會請求這個頁面,頁面里寫的目标 URL 連結也就不會被它從這個入口讀到,顺着連結發現新 URL 的路径等于断了。此时目标 URL 能否被發現,只剩其他渠道:sitemap、其他可抓取頁面上的連結、主動提交等。
還有一種更隐蔽的情况:入口頁本身没被屏蔽,但它引用的連結指向被 Disallow 的目标 URL。連結能被讀到,目标 URL 却無法被抓取,结果就是“發現了却抓不到”,日誌里只看到少量尝试甚至完全没有。
meta robots 與 X-Robots-Tag 的差別
给入口頁加 noindex 不會阻止抓取。搜尋蜘蛛仍然會請求頁面、解析 HTML、跟随里面的連結,只是不把這個入口頁收錄。如果目标是“入口頁不收錄、但連結照常被發現”,noindex 通常比 Disallow 更合适。X-Robots-Tag 通過 HTTP 响應头下發,效果類似,常见于 PDF、图片等非 HTML 资源。
nofollow 會不會影响發現
頁面級或連結級 nofollow 會被搜尋引擎当作提示處理。多數情况下爬虫仍可能把連結当线索去抓,但優先級和可靠性會下降。把 nofollow 連結当作主要的 URL 發現手段並不稳妥,尤其是入口頁連結數量多、更新频繁时。
自查清單:先確認問题出在哪一环
- 用 robots.txt 測試工具检查入口頁 URL 和目标 URL 是否被規則遮挡,注意目錄級通配符。
- 看入口頁响應头與 HTML 里的 meta,確認是否存在 noindex、nofollow,以及 canonical 是否指向了別處。
- 查服務器日誌里搜尋蜘蛛的 UA,看它是否請求過入口頁、返回什么狀態碼。
- 看目标 URL 是否被單獨請求過,狀態碼是 200、301 還是 5xx、403。
- 確認入口頁連結是真實可点击的 a 标簽,而不是纯 JS 拼接或点击後才加载。
几個容易踩的坑
- 目錄整個被 Disallow,又想靠里面的入口頁传递連結:逻辑上互斥,蜘蛛進不来。
- 規則只寫了干净地址,漏掉带參數版本:?utm、?from 等變体不在規則内,抓取行為不一致。
- 入口頁 5xx 或频繁超时:爬虫會降低来訪频率,連結發現效率下降,先修稳定性和响應速度。
- 目标 URL 自身被屏蔽或需要登入:入口頁再正常,抓取也無法完成。
一句话判断:想“不收錄但要被發現”,用 noindex;想“完全不抓取”,用 robots.txt Disallow,但別指望它還能帮你传递連結。
最後,URL 發現只是第一步,抓取和收錄還受站点质量、連結结构、抓取配額等影响。把入口頁的抓取狀態、連結可讀性和目标 URL 的可訪問性逐一確認,通常比反复更換入口頁更有效。