蜘蛛池知识

蜘蛛池入口頁的 meta 指令:noindex、nofollow、canonical 的常见誤用

入口頁的 head 里常藏着几行不起眼的 meta 指令,noindex、nofollow、canonical 一旦寫错,蜘蛛即使把頁面抓下来,處理方式也可能和预期完全不同。本文梳理這几類指令的常见誤用、排查顺序,以及一份可以定期执行的检查清單。

蜘蛛池知识

蜘蛛池入口頁的 meta 指令:noindex、nofollow、canonical 的常见誤用

先分清:robots.txt 管“能不能讀”,meta 管“讀完怎么處理”

robots.txt 在抓取之前生效,蜘蛛看到 Disallow 通常就不来讀頁面;而 meta robots 标簽寫在 HTML 的 head 里,前提是蜘蛛已经把頁面抓下来了。所以如果 robots.txt 已经把入口頁挡住,meta 里寫什么其實没人看得到。排查时的顺序應该是:先看服務器日誌有没有抓取請求,再看响應内容里有没有 meta 指令。

noindex 最容易被“顺手複製”

noindex 的意思是“不要把這一頁放進索引”。對入口頁来说它往往是致命的:入口頁存在的意义就是被發現、被跟進,被 noindex 之後,蜘蛛可能仍然抓取,但不會把它当成有效的落点,連結传递的判断也會變得模糊。

  • 從別的項目模板複製来的 head,带着一行 noindex 一直没删。
  • 測試环境為了防止被爬加過 noindex,上线时忘了去掉。
  • 用 CMS 或建站程序批量生成入口頁,插件預設给所有頁面加了 noindex。
  • 以為“入口頁本来就不需要被收錄”就随手加上,结果連結库的作用被大幅削弱。

检查方式很简單:把入口頁 URL 抓下来,直接在 head 里搜 noindex,別只看後台設定界面。

nofollow 用多了,出鏈就白挂了

入口頁常需要挂一些導航、友鏈、聚合連結。如果给這些連結统一加 rel="nofollow",等于告诉蜘蛛“這些連結不必跟”。当整個入口頁的出鏈几乎全是 nofollow 时,頁面在連結發現上的作用就會被削弱。

更稳妥的做法是按用途区分:真正希望被跟進的連結保持預設,明顯的广告位、後台入口、無意义跳轉再加 nofollow;不要用一行全局規則把整頁出鏈一刀切。

canonical 指错地方,等于自己交出归属

canonical 表達的是“這一頁的正規版本是哪個 URL”。入口站常见的問题有:

  • 所有入口頁都 canonical 到首頁,等于告诉蜘蛛每個入口頁都是首頁的副本。
  • 多個入口域名共用一套模板,canonical 里寫着主站域名,把归属指向了別處。
  • canonical 寫成带參數的版本,或者 http/https、带 www 與不带 www 混着寫。

入口頁一般更适合 canonical 自指,也就是指向自己的規范 URL,並保持协议、主机名、路径一致。改版或換域名时,canonical 要和 301 一起調整,別只改其中一個。

顺带提两個容易被忽略的标簽

meta keywords 早已不參與判断,堆一串關鍵詞没有實际作用,反而容易暴露模板痕迹。meta refresh 用来做跳轉时,蜘蛛的處理方式不如 301/302 明确,延迟设得太長也可能让人和蜘蛛都困惑;入口頁需要跳轉时,優先考虑狀態碼跳轉。

可以定期跑的检查清單

  1. 随机抽 10 到 20 個入口頁,抓取源碼,確認 head 里没有意外的 noindex、nofollow。
  2. 確認 canonical 與頁面自身 URL 一致,协议、主机名、路径都没寫错。
  3. 對比 robots.txt 與 meta 指令,避免一處放行、一處拦截。
  4. 把這几項寫進上线流程,模板改動後重跑一遍。
  5. 观察蜘蛛日誌里的抓取量與响應狀態,判断指令調整後的實际表現。
meta 指令本身不會带来抓取,它只决定蜘蛛讀到頁面之後怎么處理。入口頁的日常工作,是把這些不该有的限制清掉,而不是指望某個标簽能带来額外好處。