ZhenheAI

帶參數網址要指定哪個版本?整理 canonical 判斷與抽查表

從參數網址盤點、內容等同性判斷,到 canonical、Sitemap、內部連結與搜尋端抽查,建立一套可逐群核對主要版本的操作方式。

主題情境插畫:帶參數網址要指定哪個版本?整理 canonical 判斷與抽查表

當同一篇內容能透過追蹤參數、排序條件或網址格式差異開啟,維護者就需要為每組候選網址選出一致的主要版本。本文從盤點、內容比較到頁內訊號與搜尋端抽查,整理一套可逐群執行的判斷方式;文中的網址皆為假設示例,實際決策仍要看頁面回應與用途。

實作步驟:找出重複網址群組;判斷內容是否等同;指定主要網址版本;檢查頁內標記一致;避免轉址與標記衝突;抽查搜尋端讀取結果

找出重複網址群組

先列出所有可到達的網址,再把相似網址放入同一張工作表;不要一開始就刪掉問號後的字串,因為參數可能改變頁面。候選來源可包括網站爬取清單、站內連結、Sitemap、分析報表中的落地頁,以及搜尋端已出現的網址。每筆保留原始網址與來源,才能看出某版本是由站內連結、Sitemap,還是追蹤連結帶入。清單很大時,先按主機、路徑、語系和參數名稱分組,再人工核對;網址相似只代表值得比較,不足以證明內容重複。

整理參數時,記下名稱、值、順序、是否重複,以及去掉參數後的路徑。utm_source、campaign 等追蹤值常用來標示流量來源;sort、filter、page、variant、lang 則可能改變排序、商品集合、頁次、商品版本或語言,不能因名稱像技術欄位就視為無關。也檢查大小寫、斜線、www、http/https 等格式,但不同網址是否回傳不同頁面,要以實際回應為準。工作表至少記錄原始網址、主機與路徑、參數、狀態碼、標題、H1、語言和備註;先保留不同參數組合,下一步再判斷能否歸為同一群。若一個網址同時帶追蹤與篩選參數,拆開記錄各參數的功能,勿把整條 query 當成單一類型。參數順序或編碼不同時先保存原樣,待確認回傳內容一致後再合併。這能避免追蹤值遮住真正改變結果的條件。

例如,假設 /guide?utm_source=news 與 /guide?utm_source=mail 都呈現同一篇文章,可先放在同一候選群;/guide?page=2 則先獨立標為待比較,因為它可能載入下一頁內容。每群保留一個代表網址與完整變體清單,不要只留正規化後的結果,否則無法回查參數來源。若群組混入不同語言、商品選項或分頁,先拆開。盤點階段的完成標準,是每個候選都有來源、差異和待確認項,而不是急著替所有網址貼上相同標記。

判斷內容是否等同

判斷重複要看頁面實際提供的內容與讀者任務,不只看網址,也不只看模板相同。先開啟候選頁,確認主要文字、標題、商品或服務資訊、可用功能、語言和主要行動是否一致;再看參數造成的是追蹤、顯示順序、篩選結果,還是另一份內容。若訪客完成的事情相同、資訊主體相同,差別只在來源代碼或無關呈現形式,通常可視為相似候選。若頁面承接不同查詢、顯示不同商品集合、不同語言或不同頁次,就要保留差異,不能只因共用版型而合併。

比較時可用固定欄位逐項打勾:主標題與正文是否相同、核心清單是否改變、價格或規格是否不同、主要按鈕是否通往同一目的、語系和地區是否一致、分頁是否提供新的項目。對會載入新內容的互動頁,需確認瀏覽器呈現與伺服器回應是否一致;空白頁、錯誤頁或登入後內容也不能以網址外觀推定。若頁面只因 sort=price 改變排列順序,可評估主要內容是否仍相同,以及使用者是否需要保留排序網址;若 filter=brand 改變結果集合,先當作另一種用途記錄,再依搜尋需求決定是否要索引。可先抽樣人工比對,再確認同類頁面的規則是否適用全群。

例如,假設 /courses?utm_medium=email 與 /courses 顯示相同課程與說明,只差追蹤來源,內容可列為等同;/courses?level=beginner 若只列初階課程,則內容集合已有差異,應獨立評估。比較結論請寫成「相同」、「部分相似」或「不同」,並附上看到的差異和決策理由。不要用相似度分數代替人工判斷,也不要因為某頁目前流量低,就推論它沒有獨立用途。遇到無法登入或回應不穩的候選,標記待查並保留證據,不要先把它併入確定群組。

指定主要網址版本

主要網址要能代表該組內容,方便分享、維護和累積一致訊號。先決定站點慣用的協定、主機、路徑大小寫、尾斜線與語系格式,再選擇不含純追蹤參數的穩定版本。若參數不改變主要內容,通常由乾淨網址代表該內容;若參數確實提供獨立內容或語系,則不要把它硬併到不相符的頁面。選擇前先確認候選可正常載入、狀態合理、主要資訊完整,且沒有指向另一語言或另一商品的錯誤目標。canonical 是提供給搜尋引擎的偏好訊號,不能保證搜尋引擎一定採用;可參考 Google Search Central 的網址整合說明。優先挑使用者可辨認、長期穩定且不依賴個人工作階段的版本;若必要資訊只存在參數中,先確認移除它不會使頁面空白或轉成預設內容,再選擇不帶參數的網址。

假設候選網址 頁面差異 建議評估的主要版本
/guide?utm_source=email 文章相同,僅來源不同 /guide
/products?sort=price 商品相同,排序不同 比較用途後決定
/products?brand=abc 僅顯示特定品牌 保留為獨立候選
/tw/guide 與 /en/guide 內容語言不同 各自評估語系版本

選好後,為每群只記一個預期主要網址,並說明為何此版本最能代表內容。變體若仍需服務使用者,可保持可訪問,同時在頁內標記偏好的網址;若要移除變體,則屬於另一種轉址決策,不能只因選定主要版本就自動轉址。對排序和篩選頁,按讀者是否需要搜尋引擎直接呈現該結果判斷;對語言頁,要確保主要版本本身真的提供相同語言。這張決策表將成為後續檢查 HTML、Sitemap 和搜尋端結果的基準,若需求改變,也應更新理由和代表網址。

檢查頁內標記一致

逐一開啟群組中的代表頁與變體,檢查 HTML head 的 rel="canonical" 指向哪個完整網址。代表頁通常應指向自己的預期主要網址;純追蹤變體若內容相同,可指向同一代表頁。確認網址使用正確協定與主機、沒有意外參數、回應可正常載入,也沒有落到不同語言或無關頁面。若畫面看起來正確,仍要檢查伺服器回應的原始 HTML 與瀏覽器實際呈現結果,因為範本、外掛或前端程式可能輸出不同標記。也留意 head 中重複或互相矛盾的 canonical,並查明由哪個模板或設定產生。頁面若經登入或地區選擇才改變內容,需在相同存取條件下比對,並把條件寫進備註。

之後把頁內訊號與其他站內訊號並排核對:Sitemap 應列入預期主要版本;重要內部連結應直接連到該版本;同群頁面不應一處指向 A、一處指向 B。若網站使用多語版本,分開核對各語言的主要網址與語言標記,不要讓繁中頁面指向英文內容。若有 PDF 等非 HTML 文件,則需另外檢查伺服器是否以回應標頭提供 canonical;不要假設所有文件都能從 HTML head 檢查。記錄檢查位置、實際值、預期值和差異,才能交給維護者定位設定來源。同時檢查 canonical 目標是否帶有不必要的追蹤值,避免把變體訊號再傳給下一個變體。

例如,假設 /guide 的頁內標記指向 /guide/?utm_source=email,但工作表選定的主要網址是 /guide,這就是明確不一致;先確認尾斜線是否被網站當成另一個路徑,再統一實際偏好網址及相關連結。再假設 Sitemap 寫 /guide、頁面卻指向 /guide?ref=nav,需查清是否參數為內容所需,不能只改一端讓訊號仍分歧。完成後重新抓取同一批網址,核對每項實際標記都和工作表的預期值相符,並把未能檢查的頁面保留為未確認。

避免轉址與標記衝突

同一群網址可能同時出現頁內 canonical、Sitemap、內部連結和伺服器轉址;這些訊號若各自指向不同版本,維護者就很難表達一致偏好。先記錄每個候選的 HTTP 狀態與最後到達網址,再比較頁內標記、Sitemap 項目和站內連結。若 /guide?ref=mail 直接轉到 /guide,後者就應是後續檢查的落地頁;不要讓轉址後頁面又把 canonical 指回帶參數網址,也不要保留轉址鏈或循環而不查原因。若變體仍需提供給使用者且回傳正常頁面,才評估用頁內標記表達偏好;若變體已被轉址,就以最終頁的內容和標記作為核對重點。

不要把 noindex、robots.txt 封鎖和 canonical 當成可互換設定。noindex 是要求不讓頁面出現在搜尋結果的訊號,不是選擇重複頁主要版本的替代方式;robots.txt 若阻止抓取,搜尋引擎可能讀不到頁面上的標記。若目標頁本身也被封鎖、回傳錯誤或不適合索引,僅把其他網址指向它並不能修復根因。先核對每個候選與目標是否可抓取、回應是否正常、內容是否相符,再決定要修正哪個訊號。對既有轉址只記錄當前狀態與落點;本文的主要網址判斷不等於舊網址遷移規劃。也檢查目標是否含多餘追蹤值,避免把訊號帶到另一變體。相關作法可參考 Google Search Central。

一個假設的衝突案例是:變體頁 canonical 指向 /guide,但 Sitemap 只列 /guide?ref=mail,網站導覽也主要連向參數版。修正前先確認 /guide 是否為正確且完整的代表頁,再讓 Sitemap、重要內部連結及頁內標記共同採用同一偏好;對需要保留的篩選結果,則依其獨立用途另作決定。每次調整後,重新查狀態、最終落點與頁面標記,確認沒有把不同內容誤導到同一頁。若看到兩套設定由不同系統輸出,先定位來源再修,避免只改一次輸出而下次部署又被覆蓋。

抽查搜尋端讀取結果

頁面上宣告的 canonical 只代表站方偏好;搜尋引擎是否抓取、是否把候選歸為同一內容,以及最後選哪個網址,仍需在搜尋端檢查。從每群挑主要網址與至少一個代表變體,使用 Search Console 的網址檢查功能查看 Google 選擇的主要網址,並分開記錄「頁面宣告值」與「Google 選擇值」。不要把兩者混為一談,也不要用搜尋結果網址或 site 查詢單獨判定選擇結果。抽查前先確認檢查的是正確網域資源和完整網址;若工具顯示沒有資料或尚未建立索引,應記為未知狀態,而非推論 canonical 已正確或錯誤。

抽查表可包含群組名稱、代表網址、變體網址、頁內宣告、Google 選擇、目前狀態、Sitemap 是否收錄、內部連結方向、內容差異和下一步。優先檢查流量入口、重要內頁、近期改過模板的頁面,以及曾出現訊號互相矛盾的群組;其餘群組再按路徑或參數類型分批抽樣。若 Google 選擇與預期相同,仍確認站內各訊號沒有分歧;若不同,先回到內容相似度、轉址落點、可抓取性、內部連結及 Sitemap 逐項找原因,不要只重複提交檢查或盲目改標記。搜尋引擎可能選擇它認為更能代表內容的版本,站方標記不是保證。

例如,假設 /guide?utm_source=mail 的宣告值為 /guide,而 Google 選擇的也是 /guide,可在該群標成抽查符合,再補查另一種參數樣式;若 Google 選擇了 /guide?ref=nav,記錄差異後回看該版本是否被大量內鏈指向、是否被列入 Sitemap,或其內容是否其實不同。每輪抽查都保留網址、兩種 canonical 值、發現的訊號與修正結果,下一次才能比較是否改變。實作時先從一個參數最多、內容最明確的群組開始,完成盤點、判斷、統一訊號和搜尋端抽查,再複製這張表處理其餘群組。若要延伸了解,請從 ZhenheAI 官網首頁 開始。