WebWork

Sitemap 只列想出現在搜尋結果的最終網址:回 200、沒被 canonical 指到別頁;單檔最多 50,000 個網址或未壓縮 50 MB,超過就拆開並用索引檔提交。

Sitemap 是什麼:XML sitemap 建立、提交與 HTTP/canonical 核對

Sitemap(網站地圖)是放在網站上的檔案,向 Google 列出希望檢索的網頁、影片與圖片網址。它控制的是提交哪些網址,不控制收錄,也不直接影響排名。提交這個動作只是一種提示,Google 不一定會下載檔案,也不一定照著檔案檢索網址。

檔案的內容是網址清單,加上每筆網址的中繼資料,例如最後更新時間、有沒有其他語言版本。Google 讀取之後會知道網站上有哪些重要頁面與檔案,也能拿到影片長度、圖片位置、新聞標題與發布日期這類資訊,用更有效率的方式檢索網站。

這份清單是公開的。Google 建議把檔案放在網站根目錄,檔名可以自訂,例如 sitemap.xml。檔案必須讓 Googlebot 不需登入就能讀到;Search Console 的說明提到,可以用網址審查工具做即時測試,確認「網頁擷取」顯示成功。

Sitemap 是提交給爬蟲的網址清單,不保證收錄與排名

提交之後,Search Console 的 Sitemap 報表會記錄 Google 最後一次讀取這份檔案的時間與處理錯誤。報表出現存取紀錄,代表 Google 讀過檔案,站方可以定期回來確認 Google 能否讀取與處理這份檔案。報表只列出透過報表或 API 提交的 sitemap,只寫在 robots.txt 檔案的項目不會出現在這裡。

抓取與索引是兩個階段。爬蟲先發現網址、取回內容,Google 再決定要不要把頁面存進索引,日後拿出來給人搜尋。這份清單作用在前一個階段,把想被發現的網址送進待處理的佇列;個別頁面會不會進索引,仍由 Google 依該頁狀況判斷。Sitemap 不是排名因素,Google 官方曾說明這份檔案不影響網頁的實際排名;如果它讓更多網址被檢索,網站在索引裡出現的機會會增加。

小型網站不一定需要,大型、新站與多媒體網站建議提交

是否需要這份檔案,取決於網站規模與內部連結。網頁數不超過 500 個、重要頁面都能從首頁連結到達的網站,通常不需要提交;大型網站、剛上線且幾乎沒有外部連結的網站、含大量影片圖片或新聞內容的網站,建議提交。

Googlebot 探索網頁的主要路徑是網站選單與頁面上的連結。內部連結完整時,Google 通常就能找出大部分重要頁面,sitemap 只是備用管道。完全沒有其他頁面連到的孤兒頁面,光靠爬連結可能永遠不會被發現,清單能補上這條路徑。Google 的連結文件寫明,Google 用連結判斷網頁相關性,也靠連結找到新網頁;孤兒頁即使靠清單被發現,仍少了內部連結提供的這層訊號。

多語言網站是另一種情況。不同語言版本的網址可以一併寫進清單,Google 讀取時能看出各版本之間的對應關係。

檢索預算的調整只針對極大型網站。Google 的說明把範圍畫在 100 萬頁以上、大約每週更新,或 1 萬頁以上、每天更新的網站;不在這個範圍的網站,把清單保持最新、定期看網頁索引報表就夠。

Google 支援 XML、RSS/Atom 與文字三種格式,沒有偏好

Google 支援 XML、RSS/mRSS/Atom 1.0 與文字三種 sitemap 格式,沒有偏好,依網站狀況選用即可。HTML 網站地圖是另一回事,那是放在前台給訪客看的導覽頁,不屬於提交格式。

XML Sitemap 最通用,可附加圖片、影片與新聞資訊

XML 是最通用的格式,除了網址之外,還能附上圖片、影片、新聞與語言版本資訊。CMS 大多會自動產生這類檔案,外掛市場也有大量選擇;代價是網站規模大、網址經常變動時,維護對應關係會變得複雜。

RSS、mRSS 與 Atom 1.0 適合更新頻繁的網站

RSS 與 Atom 的結構和 XML 相近,只涵蓋最近的網址,由 CMS 自動產生最省事。它能提供影片資訊,圖片與新聞不在支援範圍。更新頻率高時,可以同時提交 XML 與 RSS,前者提供全部網頁,後者提供最新內容。

文字 sitemap 只列網址,適合內容單純的小站

文字檔每行一個網址,不加其他內容,副檔名用 .txt,例如 sitemap.txt。格式最容易實作與維護,限制是只能列出 HTML 與其他可建立索引的文字網頁。

標記值的取捨

Google 會參考 <lastmod>,前提是數值準確且可供驗證;<priority> 與 <changefreq> 則被忽略,不必花時間維護。XML 的標記值要實體逸出,檔案編碼用 UTF-8,特殊符號才不會出錯。

lastmod 要寫最後一次重大更新的日期。Google 把主要內容、結構化資料或頁面上的連結有變動算作重大更新,只改版權年份不算。日期用 W3C Datetime 格式,可以只寫日期;寫了時間就必須帶時區。日期長期和實際狀況不符,Google 最後會不再採信這個值。

做法適用情況驗證方式代價
XML sitemap需要提供圖片、影片、新聞或語言版本資訊開啟檔案確認標記完整、編碼為 UTF-8網站大或網址常變動時維護較複雜
RSS / mRSS / Atom 1.0新聞、部落格等更新頻繁的網站提交 CMS 產生的動態消息網址,再看報表狀態只涵蓋最近網址,圖片與新聞不支援
文字 sitemap內容單純、只需列出網址的小型網站逐行檢查是否只有完整絕對網址只能列出可建立索引的文字網頁

流程是選擇格式、製作檔案、提交,製作方式依網站規模選

流程是選擇格式、製作檔案、提交三步。製作方式依網站規模選,提交有兩個入口,兩者都要讓 Google 讀得到檔案。

用 CMS 外掛自動產生

Google 說明 WordPress、Wix、Blogger 這類 CMS 多半已經替網站提供 sitemap。WordPress 從 5.5 版起核心內建這項功能,索引檔在 /wp-sitemap.xml;站台設定改成「阻止搜尋引擎索引這個網站」時,這項功能會停用。Yoast SEO、Rank Math 這類外掛也各有自己的 sitemap,安裝後以外掛設定為準。

網址少時手動建立

網址只有幾十個時,用記事本或程式編輯器照格式寫即可,檔名沒有固定規則,只要使用網址允許的字元。手動建立大型檔案技術上可行,但過程繁瑣且難以長期維護。

網址多時交給系統產生

超過幾十個網址就讓系統自動產生。可以從網站資料庫匯出網址,再寫成伺服器上的實體檔案,或改用產生器工具。產生器的額度各家不同,例如 XML-Sitemaps.com 的首頁寫明免費版最多處理 500 個網址。

提交走 Search Console 或 robots.txt

第一個入口是 Search Console 的 Sitemap 報表。使用報表提交需要資源的「擁有者」權限;沒有這個權限,改用 robots.txt 宣告。報表只顯示目前這個資源的 sitemap,看不到檔案時,先確認 http 與 https、www 與非 www 是不是同一個資源。第二個入口是在 robots.txt 寫一行 Sitemap: https://example.com/sitemap.xml,Google 下次檢索 robots.txt 時就會找到,可加入的數量沒有限制。RSS 或 Atom 也可以用 WebSub 向 Google 播送變更。Google 在 2023 年 6 月公告停用原本的 sitemap ping 端點,六個月後停止運作,之後送到該端點的請求會回 404;外掛或舊程式還在 ping 不會造成問題,也沒有作用。

核對與提交流程若要交給外部執行,委外處理 sitemap 核對與提交是可評估的方向。

單一 sitemap 上限 50,000 個網址、未壓縮 50 MB,超過要分割

單一 sitemap 的檔案大小上限是 50 MB,以未壓縮的原始檔計算;網址數量上限是 50,000 個,任一項超過就要分割。分割之後可以建立 Sitemap 索引檔,裡面只列其他 sitemap 的網址,把索引檔提交給 Google 即可,索引檔本身不能再列另一份索引檔。也可以在 Search Console 分別提交多份 sitemap 與索引檔,各份檔案的搜尋成效就能分開追蹤;拆出來的每一份檔案,各自適用同一組上限。

檔案位置建議放網站根目錄。放在其他路徑也行,但沒有透過 Search Console 提交時,sitemap 只涵蓋上層目錄的子系,範圍會少一截。清單裡的網址要用完整的絕對網址,Google 會完全照列出的網址檢索,相對路徑不吃。

核對每個網址是否回 200、是否被 canonical 指到別頁

核對的目標很單純:清單裡只留回 200 狀態碼的最終網址。做法是逐一取回每個網址的 HTTP 狀態與 canonical 標籤,再和 sitemap 的內容比對,不符的刪掉後重新提交。

301 轉址與 404 的網址要換掉

301 代表列出的不是最終網址,要換成轉址後的目的網址;404 代表頁面不存在,直接移除。Google 的建議是把清單裡的轉址網址換成實際要檢索的網址,長轉址鏈對檢索不利。

canonical 指到別頁的網址不是最終版本

寫進 sitemap 的網址,Google 會當成建議的 canonical。同一份內容放在多個網址,卻在 sitemap 列一個、在 rel="canonical" 指向另一個,等於用不同方法指定不同的 canonical,形成互相衝突的 canonical 訊號。手機版與電腦版網址不同時,清單裡選一種版本就好。

noindex 與參數頁不進清單

標記 noindex 的頁面、測試頁、排序與篩選這類參數頁,都不放進 sitemap。清單要放的是希望出現在搜尋結果的正式頁面,其他網址留在站內即可。

怎麼確認核對完成

核對完成後,先開幾個網址手動確認回應 200 且 canonical 指向自己。報表狀態顯示「無法擷取」時,可能原因包括 sitemap 被 robots.txt 擋住(Google 讀 sitemap 時遵守 robots.txt)、網址填錯而回 404,或伺服器暫時無法使用。把 sitemap 網址貼進網址審查工具,看「允許檢索?」為「是」、「網頁擷取」為「成功」,就能排除前兩項。

在報表裡刪除一份 sitemap,只是把它從清單移除,Google 不會忘記檔案裡的網址。要讓 Google 停止造訪,得用 robots.txt 規則擋掉、刪掉檔案,或對 sitemap 加上 noindex 回應標頭。

相關提問

  1. 提交 sitemap 會讓排名變高嗎?

    不會。sitemap 只幫助 Google 發現與檢索網址,不是排名因素。Google 官方曾說明這份檔案不影響網頁的實際排名;如果它讓更多網址被檢索,網站在索引裡出現的機會會增加,但搜尋結果的位置仍由其他條件決定。

  2. sitemap 檔案一定要放根目錄嗎?

    不一定,但建議放根目錄。Google 允許把 sitemap 代管在網站任意位置,只是沒有透過 Search Console 提交時,檔案只涵蓋上層目錄的子系,網站其他目錄的頁面就不在範圍內。放根目錄可以一次涵蓋整個網站。

  3. sitemap 裡可以放 301 或 404 的網址嗎?

    不要。sitemap 只放回 200 狀態碼的最終網址。301 的網址要換成轉址後的目的網址,404 的網址直接移除。Google 的建議也是把清單裡的轉址網址換成實際要檢索的網址,長轉址鏈對檢索不利。

  4. 超過 50,000 個網址或 50 MB 要怎麼處理?

    要分割。單一 sitemap 上限 50,000 個網址或未壓縮 50 MB。超過其中任一項,就把清單拆成多份檔案,再建立一份 Sitemap 索引檔統一提交。索引檔只列其他 sitemap 的網址,不能再列另一份索引檔。

  5. 被 canonical 指到別頁的網址要留在 sitemap 嗎?

    不要。被 canonical 指到別頁的網址不是最終版本。sitemap 裡列出的網址,Google 會當成建議的 canonical;同一份內容若在 sitemap 列一個、在 rel="canonical" 指向另一個,等於用不同方法指定不同的 canonical,形成互相衝突的訊號。

  6. 文字 sitemap 會被 Google 接受嗎?

    會。文字 sitemap 是 Google 支援的格式之一。檔案每行一個網址,不加其他內容,副檔名用 .txt,位置不必固定,提交方式和其他格式相同。它只能列出 HTML 與其他可建立索引的文字網頁,圖片與影片資訊放不進去,網站內容單純時才適合。

  7. 提交一次之後還要重複提交嗎?

    不用。通常提交一次即可,Google 會定期回訪同一份檔案,站方只要定期檢查狀態。清單大幅變更時可以重新提交;如果 Google 讀取失敗,會重試幾天後停止,修好問題後要重新提交一次。