數據與工具

Sitemap 檢查不只是看網址數:還要核對哪些技術欄位

很多人檢查 Sitemap 的方式,是打開 Search Console 看「已發現的網址」數字有沒有變多。但網址數正確,不代表 Sitemap 健康。這篇寫給剛接手網站技術 SEO 的新同事,一步一步說明除了數量之外還要核對哪些欄位,以及每個欄位出錯時的意義。

網址數對了,為什麼還是要逐欄檢查

Sitemap 的網址數只能告訴你「列了多少頁」,無法告訴你「列的是不是對的頁」,所以檢查一定要往下核對每個網址的技術狀態。我帶新人時最常看到的情況是:Sitemap 裡有五百個網址,數字和網站頁面數差不多,大家就放心了;但實際抽查後發現,其中有幾十個是已經轉址的舊網址、十幾個是設了 noindex 的頁面、還有一批是帶參數的重複頁。這些網址不但不會被收錄,還會讓搜尋引擎對整份 Sitemap 的可信度打折。

你可以把 Sitemap 想成交給搜尋引擎的一份推薦清單。清單上的每一項都應該是你真心希望被收錄、而且能正常開啟的頁面。清單裡混入越多無效項目,對方就越不會認真看待這份清單。所以檢查 Sitemap 的目標不是確認它存在,而是確認它乾淨。

第一關:檔案本身能不能被正確讀取

在看任何網址之前,先確認 Sitemap 檔案本身沒有技術問題,因為檔案讀不到,後面的檢查都沒有意義。這一關新人常常跳過,但它其實只需要幾分鐘。

  1. 直接在瀏覽器開啟 Sitemap 網址,確認回應是正常的 200 狀態,而不是轉址或錯誤頁。
  2. 檢查檔案是否為合法的 XML 格式,最簡單的方法是看瀏覽器是否能正常顯示樹狀結構,若出現解析錯誤就代表格式有問題。
  3. 確認編碼為 UTF-8,特別是網址或標題含中文時,編碼錯誤會造成亂碼網址。
  4. 確認單一檔案沒有超過規範的網址數與檔案大小上限,超過時應分割成多個檔案並用索引檔串起來。
  5. 到 robots.txt 確認有宣告 Sitemap 位置,並且 robots.txt 沒有擋住 Sitemap 本身或其中列出的路徑。

有一個容易忽略的細節是中文網址的處理。網址中的中文字應該以百分比編碼的形式出現在 Sitemap 裡,如果直接放中文字元,某些工具讀得到、某些讀不到,會造成檢查結果不一致。遇到這種情況,先統一編碼方式再往下查。

第二關:每個網址的狀態碼是否都是 200

Sitemap 裡的每一個網址都應該回應 200 狀態碼,出現 301、302、404 或 5xx 的網址都不該留在清單裡。這是最基本、也最常出錯的一關,因為網站改版、刪文或更換網址結構時,Sitemap 往往沒有同步更新。

實作上,你可以用爬蟲工具把 Sitemap 裡的網址全部抓一次,匯出狀態碼欄位後篩選非 200 的項目。判斷方式如下:若是 301 轉址,應把 Sitemap 裡的網址換成轉址後的最終網址;若是 404,要先確認這個頁面是刻意刪除還是意外壞掉,刻意刪除就從 Sitemap 移除,意外壞掉則要修復頁面;若是 5xx,代表伺服器端有問題,這不是 Sitemap 的錯,但要立刻通知工程同事。

新人常犯的錯是只看首頁與幾個重要頁面,就認定整份 Sitemap 沒問題。狀態碼檢查一定要全量跑,因為出問題的往往是很久沒人碰的舊頁面。

第三關:標準網址與 Sitemap 網址是否一致

Sitemap 裡列出的網址,必須和該頁面自己宣告的標準網址完全相同,否則等於同時給搜尋引擎兩個互相矛盾的訊號。標準網址指的是頁面 head 區塊裡 canonical 標籤指向的網址,它告訴搜尋引擎「這一頁的正式版本在這裡」。

常見的不一致有幾種:Sitemap 用 http,canonical 用 https;Sitemap 網址結尾有斜線,canonical 沒有;Sitemap 用了帶 www 的網域,canonical 沒有;或是 Sitemap 列了帶追蹤參數的網址,canonical 卻指向乾淨網址。這些差異看起來很小,但對搜尋引擎而言就是兩個不同的網址。

檢查方式是在爬蟲結果裡同時匯出「請求網址」與「canonical 網址」兩欄,用試算表比對是否完全相同。不一致的項目,原則上應該修改 Sitemap,讓它列出 canonical 指向的版本。如果發現 canonical 本身設錯,例如所有文章都指向首頁,那就是更嚴重的問題,要先修頁面再修 Sitemap。

第四關:noindex 與被擋住的頁面有沒有混進來

設了 noindex 的頁面不應該出現在 Sitemap 裡,因為這等於一邊請搜尋引擎收錄、一邊又叫它不要收錄。同樣地,被 robots.txt 阻擋的路徑也不該出現在 Sitemap 中。

  • 常見混入 noindex 頁面的來源:會員專區、感謝頁、搜尋結果頁、標籤彙整頁、測試用頁面。
  • 常見被 robots.txt 擋住卻仍列在 Sitemap 的來源:後台路徑、篩選參數頁、預覽頁。
  • 檢查方法:爬蟲結果中匯出 meta robots 與 X-Robots-Tag 兩個欄位,篩選含 noindex 的網址;再把 Sitemap 網址逐一比對 robots.txt 的規則。
  • 處理原則:確認這些頁面確實不需要被收錄後,從 Sitemap 移除;如果其實需要收錄,就要回頭檢查 noindex 是不是誤設。

這一關經常能抓到網站外掛或內容管理系統的預設設定問題。例如某些系統會自動把所有標籤頁放進 Sitemap,但主題設定又把標籤頁設為 noindex,兩個設定互相打架,而負責的人通常都不知道。

第五關:lastmod 是否反映真實的更新時間

lastmod 欄位應該只在頁面內容實際有意義地更新時才改變,如果所有網址的 lastmod 都是同一天,或每天都自動更新,這個欄位就失去了參考價值。搜尋引擎會用 lastmod 判斷哪些頁面值得優先重新抓取,一份所有日期都一樣的 Sitemap,等於沒有提供任何優先順序的訊號。

檢查方式很直接:把 Sitemap 裡的 lastmod 欄位匯出,看日期分布。如果超過九成網址的 lastmod 都集中在同一天,很可能是系統在每次重新產生 Sitemap 時,把產生時間當成修改時間。接著隨機抽五到十頁,對照頁面上顯示的更新日期或內容管理系統裡的修改紀錄,看兩者是否吻合。

至於 changefreq 與 priority 這兩個欄位,目前主要搜尋引擎多半不太依賴它們,新人不需要花太多時間調整,但也不要填入明顯不合理的值,例如把所有頁面的 priority 都設為最高。

把檢查變成例行工作:一份月檢清單

Sitemap 檢查最好的做法是變成每月固定的例行工作,而不是等收錄出問題才來查。以下是我給新人的月檢順序,網站規模在幾百到幾千頁之間時,大約一到兩小時可以完成。

  1. 打開 Search Console 的 Sitemap 報表,確認最後讀取日期是近期,且沒有錯誤訊息。
  2. 對照網址檢查與索引涵蓋範圍報表,找出「已提交但未編入索引」的網址,這些是最值得優先調查的項目。
  3. 用爬蟲跑一次 Sitemap 全量網址,匯出狀態碼、canonical、meta robots、lastmod 四個欄位。
  4. 依序篩出非 200、canonical 不一致、含 noindex、lastmod 異常的網址,記錄在同一張試算表。
  5. 逐項判斷處理方式並通知負責的同事,下個月檢查時先確認上個月的問題是否已經修正。

如果你負責的是公司的品牌網站,而不只是技術維護,Sitemap 的健康度其實和內容策略息息相關,例如哪些頁面值得被收錄、哪些應該合併。銘望顧問所在市場調研的專案中,也會把 Sitemap 月檢列為內容盤點的起點。

這份檢查清單的限制

Sitemap 乾淨不代表頁面一定會被收錄。搜尋引擎決定是否收錄,還會考量內容品質、重複程度、內部連結與網站整體的可信度,Sitemap 只是其中一個訊號。如果 Sitemap 已經完全乾淨,但大量頁面仍然未被收錄,問題通常出在內容本身,而不是技術欄位。

另外,極小型網站,例如只有十幾頁的形象站,搜尋引擎通常靠內部連結就能找到所有頁面,Sitemap 的影響相對小,不需要每月跑完整流程,半年檢查一次即可。反過來說,每天新增大量頁面的電商或新聞網站,可能需要更頻繁的自動化檢查,這已經超出本文手動清單的範圍。

← 回到新知列表