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 回應標頭。