入口頁在蜘蛛池里的角色比較特殊:它的主要任務是让蜘蛛進来、顺着連結走到目标頁,而它自己往往並不需要被索引。正因為這個定位,robots.txt、meta robots 和 X-Robots-Tag 這三條控制线很容易被寫冲突——想屏蔽索引,结果把抓取也一起掐掉了。
抓取和索引是两件獨立的事
很多配置問题的根源,是把“蜘蛛能不能来”和“頁面能不能被收錄”当成了同一件事。實际上:
- 抓取决定蜘蛛能不能把頁面内容取回去,robots.txt 主要作用在這一层。
- 索引决定取回内容後要不要建库、要不要在搜尋结果里出現,meta robots 與 X-Robots-Tag 作用在這一层。
- 連結传递是另一條线,nofollow 類指令影响的是連結信号的传递,而不是抓取本身。
把這三层混在一起寫,就會出現“蜘蛛没来過,頁面却被收錄了”這種看起来矛盾、其實很常见的現象。
三種指令各自管什么
- robots.txt:放在域名根目錄,按路径屏蔽抓取。它是抓取层的開關,一旦屏蔽,蜘蛛不會再請求该路径下的 URL,也就讀不到頁面里的任何 meta 指令。
- meta robots:寫在頁面 head 里,需要蜘蛛把頁面抓回去才生效。常见值是 noindex、nofollow、noarchive、nosnippet 等组合。
- X-Robots-Tag:寫在 HTTP 响應头里,适合非 HTML 文件,也可以在服務器层给某個目錄统一批量加上,不用改模板。
如果同一頁面上多條指令冲突,一般以更嚴格的那條為准。實际使用中不要指望靠“哪個優先”来兜底,配置保持一致比研究優先級更省事。
入口頁最容易踩的坑
用 robots.txt 屏蔽入口頁目錄,本意是“別收錄”,结果是蜘蛛连頁面都讀不到,URL 反而可能因為外鏈被收錄成無摘要结果。
這是最典型的错配:disallow 挡住了抓取,meta noindex 就没机會被讀到。正确的顺序應该是先允许抓取,再用 noindex 控制索引。反過来做,控制就落空了。
第二類問题是模板複製。入口頁往往批量生成,robots 相關的 meta 如果寫在公共模板里,改一個地方就影响全站。上线前要確認這些頁面是不是和主站共用 head 模板,別把主站的索引狀態一起改掉。
入口頁的几種配置取向
没有统一答案,取决于你把入口頁当成什么用:
- 纯跳板:允许抓取、加 noindex、連結保持可跟随。蜘蛛能進来、能顺着走,入口頁自己不占索引位。
- 需要承接少量流量:允许抓取、不加 noindex、内容做扎實一些。但這類頁面多了容易同质化,反而拉低整体观感。
- 過渡期或測試期:先用 noindex 观察抓取是否正常,稳定後再决定是否放開索引,避免一上线就产生大量低质索引。
無论選哪種,不要用 robots.txt 去關掉一個你希望蜘蛛訪問的頁面,這條底线比任何技巧都重要。
noindex 和 nofollow 要不要一起用
两者经常被捆绑,但作用完全不同。noindex 管的是這個頁面自己不被收錄,nofollow 管的是這個頁面上的連結不传递信号。入口頁的連結是指向目标頁的,如果加了 nofollow,蜘蛛仍然可能爬過去做 URL 發現,但連結本身的意义會被削弱。
一般思路是:入口頁自身 noindex 就够了,指向目标頁的連結保持正常跟随,让爬取路径保持完整。除非入口頁上還挂着一些你完全不想让蜘蛛碰的連結,再單獨對這些連結加 nofollow,而不是整頁一刀切。
crawl-delay 別当主力
crawl-delay 寫在 robots.txt 里,只有部分搜尋引擎支持,主流引擎基本已经不參考它。想控制抓取节奏,更實际的做法是:
- 從响應速度和日誌入手,响應慢自然會被降低抓取频率;
- 用返回碼表達狀態,临时過载返回 503,而不是让請求一直超时;
- 减少無意义 URL 的數量,別让蜘蛛把時間耗在重复參數頁上。
上线前的检查清單
- 用搜尋引擎官方的 robots.txt 測試工具確認規則没寫反、没誤伤目标路径。
- 確認入口頁本身返回 200,能正常被抓取,noindex 寫在可被解析的位置。
- 確認改的是入口頁模板,没有连带改到主站或其他重要目錄。
- 观察日誌里是否真的出現對入口頁的抓取請求,以及後續是否對目标頁發起請求。
- robots.txt 改動後给它一点時間生效,蜘蛛重新讀取需要周期,別当天就下结论。
總的来说,入口頁的 robots 配置不需要多复杂,關键是別自相矛盾:想让它被爬,就別在抓取层拦;不想让它被索引,就在索引层挡。理清這條线,比反复調參數更有效。任何控制手段都只是提高被抓取和被理解的概率,並不构成收錄或排名的保證。