有些站長在做蜘蛛池时,會希望入口頁只给搜尋蜘蛛看,于是想到用 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 之後的連結會不會传递權重,各家搜尋引擎的表述並不完全一致,不要把入口頁不被索引当成權重照常传递的保證。
只想挡住普通訪客怎么办
如果目的是减少人工浏览,可以在頁面上做视觉层面的處理,或者按业務規則判断訪問来源,但要清楚這類手段和搜尋引擎抓取是两回事,做過头容易出現爬虫與用戶拿到不同内容的問题。
入口頁抓不到的排查顺序
- 用搜尋引擎站長工具里的 robots.txt 測試功能,確認入口頁 URL 是否處于可抓狀態。
- 查看服務器日誌,看目标爬虫有没有真的請求過入口頁,還是只請求了首頁。
- 检查是否在 robots.txt 里寫了 Disallow: / 之類的全局規則,或誤伤了入口頁所在目錄。
- 检查入口頁是否被防火墙、WAF、CDN 規則拦截,或返回了非 200 狀態。
- 確認入口頁 HTML 里确實存在可解析的連結,而不是靠脚本在頁面加载後才插入。
robots.txt 是抓取請求的通行規則,不是排名和索引的開關。想隐藏入口頁,先保證它還能被抓;抓不到,再谈索引和連結就是空谈。
把這两件事分開看會清楚很多:抓取层决定爬虫能不能看到連結,索引层决定這一頁要不要出現在结果里。入口頁的價值在抓取层,所以優先保住抓取,再去處理索引與展示。