不少做蜘蛛池的人會给入口頁加上 noindex,想法很直接:只想让入口頁当個“放連結的架子”,不希望它本身進入索引。這個思路本身没問题,但常被顺带理解成“入口頁不索引了,里面的連結也就不會被抓”。這是两件事,需要拆開看。
noindex 管的是索引,不是抓取
noindex 的语义是“不要把這一頁放進索引结果”,它並不阻止搜尋蜘蛛来請求這一頁。只要入口頁能被正常抓取,蜘蛛依然會下载 HTML、解析里面的連結,把目标 URL 放進待抓队列。真正會让連結跟進行為停止的,是 nofollow 這一類指令,而不是 noindex。
反過来说,如果入口頁连抓都抓不到(被 robots.txt 屏蔽、返回 403 或 429、需要登入),那 noindex 寫在哪儿都讀不到,連結自然也發現不了。“可抓取”是前提,“是否索引”是另一层判断,顺序不能倒過来。
两種寫法在日誌里的表現
meta robots
寫在 HTML 的 head 里,例如 <meta name="robots" content="noindex">。蜘蛛必须先抓到並解析 HTML 才能讀到它,所以入口頁會正常出現在訪問日誌中,狀態碼一般是 200。
X-Robots-Tag
寫在 HTTP 响應头里,例如 X-Robots-Tag: noindex。蜘蛛在响應头阶段就能看到這個标记,處理路径更短,但對“頁面里的連結能否被發現”没有影响——連結還在 HTML 里,依然會被解析。
两種方式都不會让入口頁從抓取日誌里消失。你能看到的訪問记錄,和“索引狀態”是两套分開的信号,排查时不要混用。
和 nofollow 一起寫會怎样
常见的组合是 noindex, nofollow。這时入口頁虽然照样能被抓,但頁面上的連結不再被当作可跟進的發現来源。不同搜尋引擎在细节實現上可能有差异,稳妥起见不要指望它仍能正常传递發現。
如果你的目标是“入口頁不進索引,但里面的連結照常被發現”,那就只寫 noindex,不要带 nofollow;寫成 noindex, follow 语义會更明确。
放到蜘蛛池场景里的几個實际影响
- 入口頁會持續被抓取。noindex 不會降低抓取频率,只要入口頁還被外鏈、sitemap 或別的入口指向,蜘蛛仍然會来。
- 抓取配額會被占用。入口頁本身不产生索引层面的價值,却要消耗抓取预算。入口頁數量一大,這部分開销要提前算清楚。
- 連結發現照常進行。目标 URL 會不會被排队,取决于入口頁是否可抓、連結是否是可解析的超連結、目标 URL 是否可訪問,與入口頁寫不寫 noindex 無關。
- noindex 不能当成“屏蔽入口頁”的手段。如果确實不想让入口頁被抓,那要用 robots.txt,但這同时會让里面的連結不再被發現,很可能和你原本的目的相反。
排查时按這個顺序看
- 確認入口頁返回 200,且 Content-Type 是蜘蛛能解析的類型。
- 在日誌里確認蜘蛛确實請求了入口頁,而不是只請求了站点首頁。
- 检查响應头里的 X-Robots-Tag 是否同时带了 nofollow。
- 检查 HTML head 里的 meta robots 是否包含 nofollow。
- 確認目标連結是可解析的 <a href>,不是纯文本,也不是靠 JS 後置插入。
- 最後再看目标 URL 自身的狀態碼,403、429、500 都會让發現鏈條断在下一步。
一句话区分:noindex 决定“這一頁要不要進索引”,nofollow 决定“這一頁的連結要不要跟”。把這两個指令当成同一件事,日誌和實际抓取行為就會對不上。
小结
如果只是想把入口頁隐藏起来,用 noindex 就够了,但要知道入口頁仍會被抓取、仍會消耗抓取预算,里面的連結也仍會被發現。只有当你不希望連結被跟進时,才需要 nofollow,而這通常和蜘蛛池的用途相冲突。把這两件事分清楚,再去看日誌里的抓取记錄,判断才會更贴近實际。