蜘蛛池知识

蜘蛛池入口頁的 canonical:指向自己、指向目标頁還是不加

蜘蛛池入口頁常因模板复用被判為高度相似,canonical 该指向自己、指向目标頁還是干脆不加,會直接影响入口頁的角色定位。本文拆解三種做法的實际差別、五個常见誤用,以及用抓取日誌判断目前設定是否合理的方法。

蜘蛛池知识

蜘蛛池入口頁的 canonical:指向自己、指向目标頁還是不加

為什么入口頁總會碰到 canonical 這個問题

蜘蛛池的入口頁通常有两個特点:數量多、模板同源。同一套 HTML 換個标题和少量正文就批量生成,參數、路径层級、大小寫變体也可能同时存在。這類頁面在搜尋引擎眼里很容易被归到高度相似的一類里,而 canonical 正是用来表達:這些相似頁面中,哪一個是我認可的正式版本。

所以入口頁要不要寫 canonical、寫什么值,本质上是在回答一個問题:你希望搜尋引擎把入口頁当成獨立内容頁,還是当成通往目标頁的中間层。

三種常见做法的實际差別

1. canonical 指向自己

适合入口頁有獨立正文、希望它作為單獨頁面存在的情况。自指相当于声明我就是這個頁面的标准版本,能避免同一路径带上不同參數时被拆成多個版本。

但要注意:自指並不解决頁面之間的相似問题。如果 A、B、C 三個入口頁除了标题几乎一样,每個都自指,搜尋引擎仍然可能自行判断它們是重复内容,只保留其中一個。

2. canonical 指向目标頁

這是把入口頁当作渠道頁时最常用的做法,信号會往目标頁集中。代價是入口頁本身基本不會被当成獨立頁面保留,它只承担被發現和传递信号的角色。

有两個前提值得先確認:一是入口頁與目标頁的主题是否真的相關,差异太大时 canonical 有可能被忽略;二是如果入口頁已经用 301 或 JS 跳到目标頁,再叠一個 canonical 意义就不大了,反而让信号變得混乱。

3. 不寫 canonical

把判断權完全交给搜尋引擎。對參數較多、结构本来就零散的入口頁,這種做法很常见,结果通常是搜尋引擎自己挑一個版本。問题是這個過程不可控,入口頁越多,被归並、被忽略的比例就越难预估。

几個容易踩的坑

  • 所有入口頁的 canonical 都指向首頁。這是最常见的誤用。批量生成的頁面全指向一個首頁,等于告诉搜尋引擎這些頁面都是首頁的副本,入口頁也就失去了作為獨立 URL 的意义。
  • 一個頁面寫了多個 canonical。出現两個及以上时,搜尋引擎通常會全部忽略,等于白寫。
  • 用相對路径。建议寫成完整的绝對 URL,避免因為协议或域名變体解析到意料之外的地址。
  • canonical 與 noindex 同时出現。两者表達的是相反的意图,同时存在时结果往往不是你想要的那個。
  • 靠 JS 延迟注入。canonical 直接輸出在 head 里最稳,等脚本执行再插入,抓取时可能讀不到。

怎么判断現在的設定是否合理

不用猜,看两件事就够了。

  1. 抓取日誌里,canonical 指向的那個 URL 有没有被持續訪問。如果入口頁被频繁抓取,而 canonical 指向的頁面几乎没有记錄,說明這個信号可能没有被采纳。
  2. 入口頁和它的 canonical 目标,内容是否真的能對應上。内容無關的 canonical,長期看更像是一種自我安慰。
canonical 是一個建议,不是命令。它能不能被采纳,取决于頁面内容本身是否支持這個判断。入口頁模板化程度越高,canonical 能起到的作用就越有限。

一個简單的選擇顺序

  • 入口頁只為让蜘蛛發現目标 URL、内容單薄,可考虑指向目标頁,同时接受入口頁不保留在索引里。
  • 入口頁有獨立正文、打算長期维護,用自指,並尽量让每個頁面的正文有實质差异。
  • 入口頁是參數變体、同一内容多種 URL,選一個主版本,其余指向它。
  • 拿不准就先不加,观察一段時間日誌再决定,比批量寫错再回滚要省事。

最後提醒一句:canonical 處理的是版本選擇問题,它不會让入口頁數量带来的效果成倍增加,也不能替代内容本身的差异。把入口頁做得更像正常頁面,canonical 才有讨论的余地。