做蜘蛛池的时候,很多人會在入口頁上加 noindex,想法很简單:不想让這個满屏連結的頁面出現在搜尋结果里,但里面的目标 URL 還是希望被搜尋蜘蛛顺着爬過去。這個思路本身没問题,前提是你要分清 noindex 和 nofollow 管的是两件不同的事。
noindex 管的是要不要收錄,不是要不要抓
noindex 的语义是:這個頁面可以抓,但不要放進搜尋结果。搜尋蜘蛛顺着連結爬到入口頁後,只要没有別的阻拦,仍然會下载 HTML、解析其中的連結並繼續跟進。發現 URL 和收錄頁面是两條獨立的路,入口頁自己不被收錄,並不代表里面的連結就一定不會被發現。
真正會挡住這一步的是 robots.txt 里的 Disallow:爬虫连頁面都不會下载,自然讀不到頁面上的連結。所以如果入口頁被 robots.txt 屏蔽了,就別指望它還能起到導流作用。
几種常见寫法,效果差別很大
- meta robots noindex:寫在 HTML 的 head 里,只對目前頁面生效,連結跟進預設不受影响。
- X-Robots-Tag: noindex:走 HTTP 响應头,對整個响應生效,也适用于非 HTML 文件。如果寫成 noindex, nofollow,連結就不會被跟進了,這是最容易配错的地方。
- noindex 叠加 robots.txt Disallow:頁面既不被收錄也不被抓取,入口頁基本失去 URL 發現的意义。
如果你只想去掉入口頁在搜尋里的展示、保留它作為連結中轉,用 noindex 通常就够;一旦顺手加上 nofollow 或 Disallow,等于把入口頁废掉。
需要注意的几個副作用
抓取预算會被占用
noindex 頁面仍會被定期抓取,用来確認這個标记還在不在。入口頁如果數量多、更新频繁,會持續消耗抓取预算,可能挤占目标頁的抓取机會。頁面越空、連結越杂,回訪間隔通常越長。
別指望它長期当導航
搜尋引擎不太會把一個不打算收錄的頁面長期当作稳定的連結来源重点回訪。入口頁的價值更多体現在第一次發現,後續能否被持續抓取,取决于目标 URL 自身有没有其他入口和内容支撑。
局部控制要用 rel
noindex 是整頁級別的開關,没法只對頁面上某几條連結生效。只想让個別連結不被跟進,用 rel="nofollow";想整体放開但标明連結来源,可以用 rel="ugc" 之類的属性。
實操上可以這样選
- 入口頁能抓、不想被收錄:用 meta robots noindex,不加 nofollow,同时保持 robots.txt 允许抓取。
- 入口頁已被当成低质頁、抓取频率被压得很低:與其反复調 noindex,不如換成可索引、有實质内容的頁面来承载連結。
- 頁面里混着垃圾連結和正常連結:對垃圾部分單獨加 nofollow,不要整頁 noindex 把正常連結一起牵连。
- 改完之後看日誌:確認搜尋蜘蛛是否仍在回訪入口頁、是否繼續請求里面的目标 URL,再决定要不要調整。
最後提醒一句:noindex 只是表達偏好,能不能被發現、什么时候被抓,最终還是由搜尋引擎决定。別把入口頁当成可靠的收錄通道,連結能否被跟進,和頁面结构、目标 URL 本身的质量以及整個站点的抓取情况都有關系。