蜘蛛池知识

蜘蛛池頁面上的 canonical 與 noindex:指令没對齐,投放容易白跑

投放没反應,未必是通路問题,也可能是目标頁面自己的指令在拦路。canonical 指向他站、noindex 忘记移除、robots meta 與 robots.txt 打架,都會让蜘蛛抓到了却留不下東西。本文梳理几類常见的指令冲突,並给出投放前的自查顺序。

蜘蛛池知识

蜘蛛池頁面上的 canonical 與 noindex:指令没對齐,投放容易白跑

蜘蛛池把 URL 投出去之後,蜘蛛能不能顺着通路走進目标頁面,除了线路本身,還取决于目标頁面自己给出的指令。canonical、noindex、robots meta 這些寫在 HTML head 里的标簽,看起来是细枝末节,但它們直接决定蜘蛛進来之後是繼續抓、放弃抓,還是把注意力轉移到別處。不少投放看起来“没反應”,問题其實出在這一层。

頁面級指令為什么會干扰投放

蜘蛛池的作用是制造入口、增加 URL 被發現的概率。但發現只是第一步,蜘蛛真正抓取頁面时,還會讀取頁面自身给出的信号。如果這些信号和投放意图相反,就會出現一種尴尬狀態:日誌里明明有蜘蛛来過,流量和狀態却都停在原地。

三類常见的指令冲突

canonical 指向了別的地址

canonical 的作用是告诉搜尋引擎“這個頁面的正式版本在哪”。如果目标頁面的 canonical 指向了另一個域名、另一個栏目,甚至一個打不開的地址,蜘蛛就會認為目前 URL 不是需要獨立對待的版本,投放出来的入口價值被稀释。反過来,如果希望這個 URL 被当作獨立落地頁看待,canonical 應当指向自身。

批量建站时最容易出問题的是模板:一套模板被複製到多個域名上,canonical 却仍然是同一個寫死的地址。上架前逐個核對不現實,但至少要抽查几種模板,確認 canonical 的取值逻辑跟實际部署一致。

noindex 没有清掉

測試阶段為了避免頁面提前被公開,很多人會加 noindex,或者通過响應头下發 x-robots-tag。上线时忘了移除,就會出現“蜘蛛照常来抓,頁面却不進入索引”的情况。此时监控資料里抓取量是正常的,很容易被誤判為通路没問题,從而把排查方向带偏。

這類問题的麻烦之處在于:它不會报错,也不會让服務器返回異常狀態碼,頁面就是普通的 200。

robots meta 與 robots.txt 規則打架

常见的誤解是:robots.txt 里禁止抓取,可以用頁面上的 noindex 来兜底。實际上,robots.txt 一旦禁止抓取,蜘蛛通常不會去讀取頁面内容,自然也就看不到 meta 指令,结果是 URL 有可能仍以其他方式被收錄,頁面却完全没有可控信号。

另一種反向情况是 robots.txt 放行、頁面 meta 却寫了 noindex,蜘蛛白跑一趟。两種規則應当分工明确:robots.txt 管“能不能抓”,meta 與响應头管“抓了之後怎么處理”,不要让它們互相代替。

投放前的自查顺序

  1. 看响應狀態:目标 URL 是否稳定返回 200,是否有多跳 301 鏈。
  2. 看响應头:是否下發 x-robots-tag、canonical 之類的 HTTP 級指令,優先級通常高于 HTML 内的同名标簽。
  3. 看 head 内容:meta robots、canonical、meta refresh 的具体取值。
  4. 看跳轉鏈:JS 跳轉、meta refresh 與 301 混用时,鏈條越長,中途被放弃的概率越高。
  5. 看模板批量情况:抽样检查不同模板生成的頁面,確認没有寫死的指令残留。

一点使用建议

  • 把頁面級指令纳入上架检查項,和域名解析、證书一样当成基础配置。
  • 保留一份指令變更记錄,改過 canonical 或移除過 noindex 的批次單獨标注。
  • 批量掃描比逐頁人工看更可靠,尤其是有多套模板並行的时候。
  • 發現抓取正常但毫無沉淀时,先怀疑指令层,再怀疑通路层。
蜘蛛池解决的是“让 URL 被看见”,頁面指令解决的是“看见之後怎么處理”。這两件事分属不同环节,谁都不能替谁兜底。