蜘蛛池知识

蜘蛛池的 robots.txt 與 meta 指令:哪些配置會把自己的路堵住

蜘蛛池入口頁除了内容,還有一层看不见的指令:robots.txt、meta robots、canonical。它們不决定爬虫来不来,却决定爬虫能不能走通。本文梳理這些指令的常见用法與誤用,包括 noindex 與 Disallow 的区別、nofollow 的風險、canonical 的邊界,並给出一套可參考的配置组合與驗證思路。

蜘蛛池知识

蜘蛛池的 robots.txt 與 meta 指令:哪些配置會把自己的路堵住

蜘蛛池的入口頁是给爬虫看的,而“给爬虫看”其實有两個层面:一层是頁面上能看到的内容,另一层是頁面里那些看不见的指令,比如 robots.txt、meta robots、X-Robots-Tag 和 canonical。很多人把精力全放在第一层,第二层随手一配,结果等于在自家门口挂了一块“谢绝入内”的牌子。

一、robots.txt:先想清楚你要让谁来

robots.txt 是放在域名根目錄的纯文本文件,爬虫在抓取之前通常會先讀它。在蜘蛛池里,它最常见的两種誤用是:

  • 整站 Disallow:有人為了“避免入口頁被收錄”,直接寫 User-agent: * 加 Disallow: /。结果是主流爬虫连入口頁都不會抓,跳轉也就無從谈起。想避免收錄,應该用 noindex,而不是用 Disallow。
  • 只屏蔽一部分,忘了目标頁:入口頁允许抓取,但目标頁所在目錄被 Disallow 掉了,爬虫走到半路被拦下。

需要明确的是,robots.txt 是一份约定,不是防火墙。它依赖爬虫主動遵守,並不會阻止任何不守規矩的請求。所以它解决的是“合規抓取”的問题,不解决“別人来不来”的問题。

二、meta robots 與 X-Robots-Tag:控制收錄,而不是控制抓取

noindex 的含义是“別把這一頁放進索引”,它並不阻止爬虫抓取頁面,也不阻止爬虫顺着頁面里的連結繼續走。這一点在蜘蛛池里很關键:入口頁可以同时做到“被爬”和“不被收錄”。

不過有几個细节需要留意:

  • nofollow 是另一回事:如果在入口頁加上 nofollow,等于告诉爬虫別顺着這里的連結走,這恰好切断了通往目标頁的路。除非确實不想让它走,否則不要随手加。
  • noindex 與 Disallow 不要同时用:如果頁面被 Disallow 挡住,爬虫讀不到頁面里的 noindex,反而可能因為外部連結让這個 URL 留在索引里。想不收錄,就让頁面被可抓取地讀到 noindex。
  • X-Robots-Tag 是 HTTP 头的寫法:适合非 HTML 资源,比如 PDF、图片。入口頁是 HTML 的话,meta 标簽更直观。

三、canonical:一種建议,不是命令

把入口頁的 canonical 指向目标頁,是有些人會做的操作,希望把信号集中過去。但要理解,canonical 是提示,不是指令,爬虫可以采纳也可以忽略。如果入口頁和目标頁内容差异很大,這個指向基本不會有什么作用;如果内容高度相似,還可能让爬虫干脆只保留一個版本。

更稳妥的做法是:目标頁之間不要互相 canonical,也不要把大量入口頁的 canonical 都指向同一個目标頁,形成明顯的多對一聚集。

四、一套可以參考的组合

如果入口頁的定位就是“可抓取、不收錄、能跳轉”,可以按這個思路配置:

  1. robots.txt 允许爬虫抓取入口頁路径和目标頁路径,只屏蔽後台、站内搜尋结果這類無意义路径。
  2. 入口頁加 meta robots 的 noindex,但不加 nofollow。
  3. 跳轉用普通連結或 301,避免层层嵌套的 JS 跳轉。
  4. 目标頁保持可抓取、可收錄,不加 noindex。
  5. 入口頁不主動往站長平台的提交接口里推,避免把不想收錄的頁面推出去。

五、几個常见的坑

  • 指令反复改:今天加 noindex,明天删掉,後天又加回来。同一批 URL 的指令频繁變動,容易让爬虫做出难以判断的選擇,也让日誌變得难分析。
  • 用 robots 屏蔽入口頁,又抱怨没蜘蛛:這是最典型的自相矛盾。
  • 把指令当成收錄開關:無论是 robots 還是 noindex,都只是表達意愿,最终是否收錄由搜尋引擎的規則决定。指令能做的是减少干扰,不是保證结果。
  • 忽略服務器返回狀態:robots.txt 如果返回 5xx,爬虫可能暫停抓取;返回 404 通常视為没有限制。這两種狀態带来的行為差別不小,值得在日誌里核對。
把指令层当成入口頁的一部分来设計,而不是上线前顺手填的一栏。它本身不产生内容,却會影响内容有没有机會被看到。

如果要给一個操作建议:先用少量入口頁把 robots、meta、canonical 這套配置跑一遍,看日誌里爬虫是否真的進到了入口頁,又是否繼續走到了目标頁,確認之後再扩量。指令這種東西改一次影响一片,值得多花半天時間驗證。