一個專為 Blogger 設計的標準網址 (canonical) 標籤產生器,會將您希望搜尋引擎視為主要版本的文章絕對網址,轉換成單一已跳脫字元的 rel="canonical" 連結元素,讓您直接貼到 Blogger 佈景主題的 HTML head 中。在 Blogspot 上這個需求特別迫切,因為同一篇文章會出現在多個網址:blogspot 主機、任何綁定到您部落格的自訂網域別名、?m=1 行動參數、標籤頁面,以及搜尋結果篩選器。canonical 元素本身不會重新導向訪客,也不會從索引中移除重複的內容;它只是告訴爬蟲應該把這些變體所累積的訊號整合到哪一個版本上。這個元素是一種強烈的偏好訊號,而非保證,因此它的價值仍然取決於是否與 sitemap、內部連結以及永久重新導向保持一致。若要在 Blogger 上妥善使用產生器,請餵入一組完整的絕對網址 —— 包含通訊協定與主機 —— 因為相對路徑會被拒絕,畢竟其意義會隨著文件位置而改變。接著產生器會透過瀏覽器的 URL parser 去除網址片段、標準化主機與預設通訊埠,完整保留路徑,並對 & 符號進行 HTML 跳脫,使產生的標籤成為有效的標記。您複製回去的就是一個連結標籤,能整齊地置於現有 Blogger head 標記的上方,準備好為每篇文章宣告一個首選網址。

canonical tag generator for blogger
Canonical Tag Generator for Blogger: A Practical Setup

為何 Blogger 的網址會洩漏重複內容

Blogger 會將同一篇文章以幾種網址家族呈現,搜尋引擎可以各自獨立觸及這些網址。blogspot 形式 yourblog.blogspot.com/2024/03/post-title.html 與自訂網域形式 www.yourblog.com/2024/03/post-title.html 常常會同時上線。行動裝置訪客會透過附加 ?m=1 的方式進入同一篇文章,標籤索引頁透過 /search/label/... 連結到文章,而彙總頁面則會以查詢參數重新暴露同一篇文章。這些網址各自都是獨立的網路資源,因此搜尋系統天生無法知道它們其實都在描述同一篇文章。canonical 元素以機器可讀的形式,在頁面本身旁邊明確地給出這項指示。

這就是為什麼在 Blogspot 上,canonical 元素並非可有可無的例行作業。沒有它的話,訊號 —— 反向連結、分享次數、sitemap 項目、內部連結權重 —— 會分散到各個網址變體上而被稀釋。有了它,這些訊號會指向同一個網址,重複的變體會被視為已整合而非彼此競爭,您偏好的網址也就成為索引與排名決策中明確的焦點。由於每個 Blogger 網址仍然可以單獨載入並排名,canonical 元素是在不依賴爬蟲啟發式判斷的前提下,宣告偏好的最乾淨方式。

Blogger 內建的 canonical 處理與您自訂的版本

Blogger 的渲染管線在大多數範本中,已經會為主要文章網址輸出一個 canonical 連結。這個自動產生的元素通常會指向該文章在部落格所選標準主機 (blogspot 或自訂網域) 中的主要網址,並排除查詢字串。您使用產生器的工作就是,確保您產生的元素與平台的決定一致,而且只在刻意時才覆寫它。在所選網址上設定自我指向的 canonical 是安全的預設做法:文章的每個變體都指向一個首選網址,而該首選頁面也指向自己。

若您打算以自訂網域而非 blogspot 網址作為整合目標,請將自訂網域的網址貼到產生器中,把結果放到佈景主題的 head 裡,並確保其他地方的重複訊號 (sitemap、內部連結、自訂網域重新導向規則) 都一致。若您打算保留 blogspot 網址作為主要版本,請貼上 blogspot 形式,並移除範本中可能新增的任何衝突自訂網域 canonical。任一種選擇都能運作;關鍵在於所有訊號都必須一致。

套用至 Blogger 網址的標準化行為

在產生器輸出連結元素之前,輸入會經過瀏覽器的 URL 實作,限制為不含認證資訊的 HTTP 與 HTTPS,移除任何片段,並以標準形式序列化。接著 href 會經過 HTML 屬性跳脫 —— 包括查詢字串中的 & 符號 —— 再插入到 rel="canonical" 連結元素中。下表摘要說明常見的 Blogger 網址輸入會發生什麼事。

Input formExampleResulting href
Uppercase host with mobile queryhttps://Example.com/post?m=1https://example.com/post?m=1
Fragment on a comment anchorhttps://example.com/post#commentshttps://example.com/post
Explicit default HTTPS porthttps://example.com:443/posthttps://example.com/post
Internationalized domainhttps://Bücher.example/posthttps://xn--bcher-kva.example/post
Path with encoded spacehttps://example.com/my%20posthttps://example.com/my%20post
Relative path/postRejected; absolute scheme and host required
Unsupported schemeftp://example.com/postRejected; only HTTP and HTTPS accepted
Credentialed URLhttps://user:[email protected]/postRejected; credentials are never valid in a canonical

此表中對 Blogger 特別重要的三項行為。路徑的大小寫會保留,因此 /Post 與 /post 會維持為不同的候選 —— 請謹慎選擇。查詢字串會保留,因此 ?m=1 行動參數若您輸入時帶有,就會原樣通過;通常您不會這麼做,因為您正在將桌面版文章網址宣告為標準網址。& 符號在屬性中會以 & 呈現,使標記有效,而您在畫面上看到的網址仍顯示一般的 &。若需快速查閱所有標準化規則,canonical tag generator normalization cheat sheet 列出產生器涵蓋的八項符合標準的測試案例。

為 Blogger 文章產生並複製 canonical 標籤

  1. 在 Blogspot 上開啟您要整合的文章,從網址列複製其絕對網址。請確認通訊協定 (http 或 https) 與主機符合您預定作為主要版本的網址 —— blogspot 或自訂網域。若有附加行動 ?m=1 參數,請將其移除。
  2. 開啟 canonical tag generator 並將網址貼到輸入欄位。確認網址以 http:// 或 https:// 開頭,且未內嵌任何認證資訊。
  3. 產生標籤。將工具顯示的標準化 href 與您希望搜尋引擎偏好的實際 200 頁面進行比對。檢查主機是否為小寫、路徑是否完全符合您的文章 slug,以及任何片段是否都已移除。
  4. 若輸入不小心包含 ?m=1,請回到步驟 1,使用省略該參數的網址再操作一次。工具會保留查詢字串;並不會代您自動去除。
  5. 複製產生的 rel="canonical" 連結元素。其外觀類似 <link rel="canonical" href="https://example.com/post">,查詢字串中任何 & 都會以 &amp; 表示。
  6. 將該元素保留在剪貼簿中,接著前往 Blogger 佈景主題編輯器進行配置。

將標籤放置於 Blogger 佈景主題的 head 中

在 Blogger 後台中,開啟主題,點選自訂旁的箭頭,然後選擇編輯 HTML。佈景主題檔案會使用 Blogger 的 XML 小工具標籤,但在 HTML head 內部您可以貼上標準的連結元素。找到收尾的 </head> 標籤,將複製的元素緊接著放在它的正上方,讓它與其他 head 中介資料並列,而非置於 body 內。若您的範本已經自動產生 canonical,並且您想取代而非新增第二個,請在貼上您的版本之前,先移除或註解掉原有的元素;每個頁面只能有一個 canonical。

若需要針對個別文章有所差異,請將 canonical 元素包進 <b:if cond='data:blog.canonicalUrl'> 區塊中,讓 Blogger 控制元素是否呈現;或者硬式編碼一個首選網址,並接受所有文章將共用同一個。若為多人作者或以標籤驅動的部落格,建議採用條件式做法,使每篇文章都能帶有自己的 canonical href。儲存佈景主題後,接著進行驗證。

抽樣檢查已發佈的 canonical 元素

在全新的瀏覽器分頁中開啟您部落格上的一篇已發佈文章,檢視網頁原始碼。確認在 <head> 內部 (而非 body 內部) 出現單一個 <link rel="canonical" href="..."> 元素。該 href 應解析為內容相當的 200 頁面 —— 通常就是您指定的文章,託管在您所選擇的標準主機上。若出現兩個 canonical 元素,請移除非預期的那一個;互相衝突的 canonical 會削弱訊號,Google 依其 consolidation guidance,可能會任意擇一。

請在多個具代表性的路由上重複此檢查:從標籤頁進入的文章、從搜尋結果頁進入的文章、首頁,以及彙總頁面。單一頁面成功並不能證明每個產生的頁面都正確,因為 Blogger 範本在不同的檢視下可能會套用不同的條件。若某個路由呈現出兩個 canonical 元素或完全沒有,請回到佈景主題編輯器,協調 head 中的標記,使每個頁面都只輸出一個指向正確網址的 canonical。

將 canonical 訊號與其他 Blogger head 標記搭配使用

canonical 元素解決了網址整合的一部分;其餘的 head 仍然需要關注。在每篇文章上設定自我指向的標題與 meta 描述,即使多個頁面帶有相同的 canonical,仍會讓每個頁面在爬蟲眼中看起來各自獨立;meta tag generator 可協助您從本地輸入起草 head 標記,而無需將標題或描述文字傳送至遠端伺服器。robots 指示可控制頁面層級的索引;相符的 robots.txt 則可控制網站層級的爬取,並可透過專為單一 Blogger 主機調整的 robots.txt generator 在本地產生。對於多語系的 Blogger 部落格,hreflang 組合可讓各區域版本與 canonical 保持一致;匹配的 hreflang 區塊能協助爬蟲將每個翻譯版本視為獨立內容,而非所選 canonical 網址的重複項。

請將 canonical 標籤視為整合的關鍵基石,並將周圍的 head 標記視為支撐結構。確認每個頁面只有一個 canonical、確認周圍的中介資料準確描述該頁面,並確認指向相同網址的 sitemap —— 若您不想將網址清單外傳,可在本地產生 —— 指向每個首選網址,且不包含重複的 Blogspot 或查詢字串變體。當這些訊號共同運作時,就能為搜尋引擎提供一個單一且明確的觀點,指出哪個 Blogger 網址應該針對每篇文章進行排名。

延伸閱讀:Hreflang Generator Free No Sign Up: Paste-Ready Tags。