常见問题

蜘蛛池入口頁用 robots.txt 屏蔽自己,只让搜尋蜘蛛抓目标 URL,行得通吗?

有人希望入口頁只服務搜尋蜘蛛、不暴露给普通訪客,于是用 robots.txt 把入口頁屏蔽掉,以為目标連結照样能被抓。本文說明 Disallow 只拦抓取、不控制索引,被拦頁面上的連結一般不會被發現,並给出 noindex、响應头和日誌排查等更稳妥的做法。

常见問题

蜘蛛池入口頁用 robots.txt 屏蔽自己,只让搜尋蜘蛛抓目标 URL,行得通吗?

有些站長在做蜘蛛池时,會希望入口頁只给搜尋蜘蛛看,于是想到用 robots.txt 把入口頁本身屏蔽掉,只保留頁面上的目标連結被抓。思路听起来成立,實际执行时却经常直接把 URL 發現這條路堵住。

Disallow 究竟拦住了什么

robots.txt 里的 Disallow 只解决一件事:請求遵守协议的爬虫不要抓取某個路径。它不负责收錄與否,也不是權重開關,更不會因為頁面看起来没用就自動放過。

真正的問题在這里:爬虫不抓這個頁面,就看不清頁面上寫的連結。入口頁存在的意义就是承载目标 URL,一旦入口頁在抓取层被拦掉,頁面里的連結對爬虫等于不存在——除非這些目标 URL 還能從 sitemap、站外連結或其他入口頁被發現。

被拦頁面上的連結不會平移過去

常见誤解是頁面不让抓,但連結照样能被跟着走。連結的可發現性依赖頁面被抓取和解析這两個動作,少了前一步,後面就無從谈起。少數例外是目标 URL 同时出現在別處,那也與這個入口頁無關了。

想让入口頁不進索引,可以怎么做

如果動机只是不想让入口頁出現在结果頁里,例如頁面很薄、内容重复、结构像目錄頁,又不希望影响連結被發現,可以考虑让抓取通過、让索引走開:

  • robots.txt 中允许爬虫抓取入口頁路径,不要寫全局 Disallow。
  • 在入口頁 head 中加 meta name="robots" content="noindex, follow",或在响應头里加 X-Robots-Tag: noindex, follow。
  • noindex 负责這一頁不要進索引,follow 表示連結仍可被抓取,两者配合才是這種场景的常用做法。
  • 注意顺序:如果 robots.txt 已经禁止抓取,爬虫讀不到頁面,也就永遠看不到 noindex,這條規則會失效。

至于 noindex 之後的連結會不會传递權重,各家搜尋引擎的表述並不完全一致,不要把入口頁不被索引当成權重照常传递的保證。

只想挡住普通訪客怎么办

如果目的是减少人工浏览,可以在頁面上做视觉层面的處理,或者按业務規則判断訪問来源,但要清楚這類手段和搜尋引擎抓取是两回事,做過头容易出現爬虫與用戶拿到不同内容的問题。

入口頁抓不到的排查顺序

  1. 用搜尋引擎站長工具里的 robots.txt 測試功能,確認入口頁 URL 是否處于可抓狀態。
  2. 查看服務器日誌,看目标爬虫有没有真的請求過入口頁,還是只請求了首頁。
  3. 检查是否在 robots.txt 里寫了 Disallow: / 之類的全局規則,或誤伤了入口頁所在目錄。
  4. 检查入口頁是否被防火墙、WAF、CDN 規則拦截,或返回了非 200 狀態。
  5. 確認入口頁 HTML 里确實存在可解析的連結,而不是靠脚本在頁面加载後才插入。
robots.txt 是抓取請求的通行規則,不是排名和索引的開關。想隐藏入口頁,先保證它還能被抓;抓不到,再谈索引和連結就是空谈。

把這两件事分開看會清楚很多:抓取层决定爬虫能不能看到連結,索引层决定這一頁要不要出現在结果里。入口頁的價值在抓取层,所以優先保住抓取,再去處理索引與展示。