Sitemap 是什麼?XML 網站地圖提交與 SEO 檢查教學
Sitemap 是搜尋引擎發現重要 URL 的線索,不是排名或收錄保證。本文說明哪些頁面該放入 XML sitemap、lastmod 與 sitemap index 怎麼寫、如何提交到 Google Search Console,以及提交後的錯誤排除與維護邊界。
最後更新:
Sitemap 是給搜尋引擎看的 URL 清單,功能是協助發現重要頁面。它不會保證收錄,也不會直接讓排名上升;真正的價值在於把哪些頁面值得被搜尋引擎發現、何時更新、哪裡提交、提交後怎麼檢查,整理成一套可驗證的流程。
AK 把 sitemap 的角色定名為探索提示(Discovery Hint),對照的立場是索引保證。探索提示只負責讓搜尋引擎更快知道網址存在;能不能收錄,仍然由頁面本身能不能被存取、是否允許索引、內容值不值得收錄決定。這個分寸沒抓對,最常見的後果就是把 sitemap 當成免責金牌,出了問題卻不去處理頁面真正的病灶。
如果網站頁面很多、內容常更新、內鏈還不夠完整,或剛搬家改版,sitemap 就很重要。相反地,如果網站只有少量頁面,而且每個頁面都能從首頁自然連到,sitemap 仍然有幫助,但它不是修復內容品質、索引資格或技術封鎖的萬用工具。Google 對 sitemap 的官方說明 也把它定位成協助搜尋引擎了解網站內容的線索。
Sitemap 是什麼?網站地圖不是排名捷徑
Sitemap,中文常說網站地圖,通常指 XML sitemap。它列出網站希望搜尋引擎知道的 URL,並可附上最後更新時間。搜尋引擎讀到 sitemap 後,會把這些 URL 當成發現與重新爬取的線索,但是否爬取、是否索引、是否排名,仍取決於頁面能不能被存取、是否允許索引、內容是否值得收錄,以及搜尋系統如何判斷該頁面的用途。換句話說,sitemap 是網站與搜尋引擎之間的溝通管道,讓搜尋引擎知道「這些頁面存在」,但不會因為頁面被列在 sitemap 中就自動獲得較高的排名或保證收錄。
因此,對 sitemap 的正確期待是:讓搜尋引擎更容易知道哪些 URL 存在,同時讓網站負責人透過提交狀態檢查頁面是否被正常處理。錯誤期待則是:把大量頁面丟進 sitemap,就以為 Google 必然會收錄。若頁面本身被 noindex 標記、canonical 指向別頁、回傳 404,或內容品質低落,sitemap 只會讓這些問題更早被搜尋引擎看見,並不會替頁面通過索引門檻。網站負責人應將 sitemap 視為「發現輔助工具」,而非「排名保證書」。
sitemap 與排名、收錄的真實關係
Google 官方文件說明,提交 sitemap 只是提示,不保證 Google 下載或使用其中每個 URL。本文因此不把 sitemap 當成排名或收錄保證;排名與索引仍由搜尋系統另行判斷。sitemap 對大型網站、新網站、缺少外部連結的網站,以及含大量影片、圖片或新聞內容的網站特別有幫助。搜尋引擎得知 URL 後,仍會依自己的排程決定是否抓取與索引。
實務上,sitemap 能提供新 URL 與深層 URL 的發現線索,並用準確的 lastmod 告知頁面最近一次重大更新時間;它不承諾發現或抓取需要多久。但這些作用都建立在頁面本身具備被索引的條件之上。若頁面回傳 4xx 或 5xx 狀態碼、被 robots meta 標記為 noindex、或內容與其他頁面高度重複,即使 sitemap 正確提交,搜尋引擎仍會選擇不索引該頁面。網站負責人應先確保頁面品質與可存取性,再依賴 sitemap 作為輔助發現管道。
常見誤解:sitemap 不是內鏈替代品
有些網站負責人以為有了 sitemap,就可以忽略站內連結的建立。實際上,sitemap 與內鏈各自扮演不同角色。內鏈讓使用者與爬蟲沿網站結構發現相關頁面,也提供頁面關係與重要性的線索;sitemap 則提供 URL 清單,不取代可跟隨的內鏈。兩者功能不同,不應把 sitemap 描述成可直接分配排名權重。
另一個常見誤解是認為 sitemap 能解決所有技術 SEO 問題。sitemap 只能暴露 URL 清單與提交狀態,無法修復頁面載入速度、行動裝置相容性、結構化資料缺失等問題。當網站出現大量頁面未被索引時,sitemap 反而能幫助網站負責人快速識別問題頁面,進而檢查是 robots 規則阻擋、canonical 設定錯誤,還是內容品質不足。下表整理常見的期待落差,幫助網站負責人建立正確的 sitemap 使用觀念。
| 你以為 sitemap 做的事 | 它實際做的事 |
|---|---|
| 保證 Google 收錄 | 提供 URL 發現線索 |
| 直接提升排名 | 協助爬取與更新流程更清楚 |
| 替代內鏈 | 補充內鏈以外的發現管道 |
| 解決所有技術 SEO 問題 | 暴露 URL 清單與提交狀態問題 |
什麼頁面該放進 sitemap:先做 URL inventory
好的 sitemap 不是把全站能抓到的 URL 全放進去,而是把「你真的希望搜尋引擎發現並評估索引」的 URL 放進去。這一步可以叫 URL inventory,也就是先盤點 URL 狀態,再決定是否放進 sitemap。判斷的標準不是頁面存在與否,而是它是否具備被搜尋引擎收錄的資格與價值。
Sitemap 應該優先收錄可索引、重要、穩定、可公開存取的標準頁面。 若頁面還在測試、重複、被封鎖、已轉址,或只是篩選參數結果,放進 sitemap 會讓提交清單與實際索引意圖不一致,並增加 GSC 報表的排查雜訊。先建立完整的 URL 清單,再逐一過濾,遠比事後從報表裡刪除錯誤來得省力。
三層過濾:indexability、重要性與穩定性
第一層過濾是 indexability,也就是頁面是否允許被搜尋引擎索引。頁面若回傳 noindex、被 robots 規則封鎖、需要登入才能存取,或回傳 404、soft 404、redirect 狀態,都不該出現在 sitemap 裡。sitemap 的目的是提交「目的頁」,不是提交錯誤頁或中轉頁;把這些 URL 放進去會讓提交清單與實際索引意圖互相矛盾,也讓 Search Console 的 sitemap 與網頁索引報表更難判讀。
第二層過濾是重要性。一個網站可能有上千個 URL,但並非每個 URL 都值得被搜尋引擎優先發現。核心服務頁、產品頁、文章頁這類承載主要流量與轉換任務的頁面,應該放進 sitemap;而站內搜尋結果、排序參數頁、篩選組合頁這類低價值或容易產生重複內容的 URL,則通常不該放。大型網站的 URL 數量動輒上萬,AK 的實務判斷是 sitemap 優先列出希望出現在 Google 搜尋結果中的 canonical URL;其他可抓取 URL 是否保留,仍要按網站架構與索引策略決定。這是策略立場,不是已證明的排名因果,讀者要照自己網站的規模、內容更新頻率與內鏈完整度判斷是否採用同樣的取捨。
第三層過濾是穩定性。sitemap 不是一次性檔案,它會持續被搜尋引擎重新讀取;一個 URL 若反覆新增與移除,會讓 sitemap 難以反映網站的實際 canonical 清單,也會增加維護與報表判讀成本。放進 sitemap 的 URL 應該具備長期存續的條件,至少在你預期的更新週期內不會消失。測試中的頁面、暫存頁面、活動結束後即下架的頁面,都不適合放進 sitemap;等它們正式上線並穩定後再提交,反而能維持清單品質。
重複 slug 如何污染 sitemap:同一個任務只能有一個負責人
AK 把重複 slug 列為 sitemap 最常見的漏洞之一。同一個查詢任務被兩個不同網址各自發一次,兩個網址又同時出現在 sitemap 裡,等於自己告訴搜尋引擎這個任務有兩個負責人。例如一篇「如何設定 canonical」的文章,同時存在 /canonical-guide 與 /canonical-tag-guide 兩個版本,兩者內容幾乎相同,卻都被列入 sitemap;搜尋引擎必須自行判斷哪一個才是權威版本,而這個判斷結果不一定符合你的預期。
重複內容若同時存在於不同 URL,連結與 canonical 訊號可能分散在多個版本;這是 URL 與 canonical 管理問題,不是 sitemap 本身會直接「分散權重」。sitemap 應只列希望搜尋結果採用的 canonical URL。sitemap 只能收錄真正的負責頁網址(Owner URL),也就是同一個任務只保留一個 canonical 版本;重複版本要嘛下架,要嘛轉址,不能兩個都留著提交。這是 AK SEO Labs 自己的網站也踩過的問題,修復過程整理成本文後段的一手觀察。
若你不確定某個頁面是不是標準版本,先確認 canonical 設定。這篇 canonical 標準網址教學 可以幫你判斷 sitemap 是否列到了錯誤版本。sitemap 除了規範自己網站要收錄哪些頁面,也可以反過來當成研究競品的公開資料來源,因為多數網站的 sitemap 本身就是任何人都打得開的公開檔案。這個用法屬於競品分析的方法範圍,完整流程收在 SEO 競品分析怎麼做,這裡只提醒一個邊界:sitemap 能看到對方掛出的 URL 清單,看不到流量、頁面品質,也看不到沒公開在 sitemap 裡的頁面,不能直接當成對方的完整內容版圖。
| URL 類型 | 是否放進 sitemap | 判斷原因 |
|---|---|---|
| 核心服務頁、產品頁、文章頁 | 放 | 重要且需要被搜尋引擎發現 |
| 回傳 200 且允許索引的 canonical URL | 放 | 代表你想讓搜尋引擎採用的版本 |
| noindex 頁面 | 不放 | 你已經要求搜尋引擎不要索引 |
| 404、soft 404、redirect URL | 不放 | sitemap 應列目的頁,不列錯誤或中轉頁 |
| 參數頁、排序頁、站內搜尋結果 | 通常不放 | 容易造成重複與低價值 URL 膨脹 |
XML sitemap 怎麼寫:loc、lastmod 與 sitemap index
XML sitemap 的基本格式很簡單,每個 URL 通常至少包含 loc,也就是完整網址。lastmod 可以提供最後修改時間,但前提是它要真實反映內容更新,不要每天自動刷新成今天日期。priority 和 changefreq 在很多現代 SEO 流程裡已經不是核心,不該拿來當排名控制器。正確的寫法,是讓 sitemap 如實反映網站當下的 URL 狀態與內容變動,而不是把它當作向 Google 傳遞排名訊號的工具。
lastmod 造假模式的校正方法
AK 把 lastmod 的正確填法叫做更新時間收據(Freshness Receipt):lastmod 寫的必須是內容真正被修改的日期,不是部署日,也不是原始發布日。很多 sitemap 產生器圖方便,直接把 build time 或 deploy time 塞進 lastmod,結果每次重新部署,全站 lastmod 一起跳成當天,等於製造假的更新訊號。判斷方法很直接:這個 URL 的可見內容、結構化資料或核心資訊有沒有真的變,變了才更新 lastmod;只是重新部署、換主機或改樣式,不算。
校正 lastmod 造假,第一步是找出產生器把哪個時間戳記寫進欄位。常見的造假來源有三種:檔案系統的修改時間(mtime)、建置工具的輸出時間、以及內容管理系統的發布時間。mtime 會因為搬移檔案、變更權限而跳動,與內容更新無關;建置時間則每次編譯都更新,最容易造成全站 lastmod 同步刷新。校正做法是改從內容層級讀取真正的修改時間,例如資料庫中文章的 updated_at 欄位,或 Git 提交紀錄中該檔案最後一次因內容變更而提交的時間。若網站是靜態產生器建置,應在產生 sitemap 時明確指定 lastmod 的資料來源,而不是沿用檔案系統時間。
第二個校正步驟是建立 lastmod 的驗證機制。可以寫一支排程腳本,比對 sitemap 中的 lastmod 與內容庫的更新時間,若兩者不一致就發出警示;若團隊要設 24 小時等容許值,應明標為自己的營運 SLA,而不是 Google 規則。更務實的做法是,在內容管理流程中加入「是否更新 lastmod」的勾選欄位,讓編輯在真正修改內容時手動觸發,而不是每次儲存草稿或調整版面都自動更新。修正 lastmod 後更新 sitemap 即可;Google 會定期重新抓取已提交的 sitemap,沒有必要因每個單頁變更都手動重複提交。
sitemap index 拆分條件與實作方式
常見上限是單一 sitemap 最多 50,000 個 URL,未壓縮檔案大小最多 50 MB。超過時不要硬塞,應拆成 sitemap index。但拆分條件不只看數量與檔案大小,更應該依照網站的內容結構與更新頻率來切分。例如,新聞稿與產品頁的更新頻率差異極大,依內容類型拆分的主要價值是維護與監控各組 URL,不應宣稱 Google 會按整份檔案中最頻繁的更新節奏抓取。合理的拆分方式是:依內容類型(文章、產品、分類、圖片)、依更新頻率(每日、每週、每月)、或依網站目錄結構(/blog/、/products/、/resources/)來切分。
sitemap index 的格式與一般 sitemap 相同,只是每個 loc 指向的是子 sitemap 的網址,而非頁面 URL。index 檔本身也有 50,000 個子 sitemap 的上限,但實務上很少網站會觸及這個數字。拆分時要注意,子 sitemap 應使用完整絕對 URL 且可公開抓取;HTTP 或 HTTPS 要與實際網站及已驗證資源一致,不能一律宣稱只允許 HTTPS。另外,index 檔中的 lastmod 應反映子 sitemap 最後一次變動的時間,這有助於 Google 判斷哪個子檔案需要重新抓取。
決定是否拆分,可以從三個條件評估:URL 數量超過 50,000 或檔案超過 50 MB;網站包含多種內容類型且更新頻率差異明顯;或者希望針對特定區塊(如圖片、影片)單獨提交。若網站只有數百個 URL 且更新頻率一致,不需要拆分,單一 sitemap 反而更容易維護。拆分後,提交到 Google Search Console 時只需提交 index 檔的網址,Google 會自動讀取所有子 sitemap。Sitemaps.org 的 XML Sitemap protocol 定義了 URL set、sitemap index、loc、lastmod 等基本格式,實作前應先確認格式符合規範。
| 欄位或檔案 | 用途 | AK SEO Labs 建議 |
|---|---|---|
| loc | URL 的完整位置 | 必填,使用正式 HTTPS canonical URL |
| lastmod | 最後修改時間 | 只在內容真的更新時變動 |
| sitemap index | 管理多個 sitemap | 大型或多類型網站建議使用 |
| 圖片或影片 sitemap | 補充媒體資源資訊 | 媒體內容是搜尋入口時再做 |
sitemap 內容要跟實際站內 URL 狀態同步,不然提交越勤,錯誤也越穩定。定期檢查 sitemap 中是否有已刪除、已改址或回傳 404 的 URL,並從 sitemap 移除,才能維持提交品質。Google 支援 sitemap index,適合大型網站把多個 sitemap 拆成文章、分類、產品、圖片等不同檔案,再用一個 index 檔統整,但拆分與否應依上述條件判斷,而非為了拆分而拆分。
HTML sitemap、robots.txt 與 IndexNow 各自負責什麼
URL 發現不只靠 XML sitemap。HTML sitemap 給使用者和搜尋引擎看,robots.txt 可以告訴搜尋引擎 sitemap 位置,IndexNow 則是對支援它的搜尋引擎送出 URL 更新通知。它們是不同管道,各自服務不同對象與目的,不應互相取代。
XML sitemap 負責提交 URL 清單,HTML sitemap 負責補強站內導覽,robots.txt 負責宣告位置,IndexNow 負責通知更新。 其中 IndexNow 的 官方文件 明確把流程設計成提交新增、更新、刪除的 URL 通知,但它不是 Google 收錄保證,也不能代替 GSC 的 sitemap 狀態檢查。
四種管道的實際邊界:誰服務誰、誰不能做什麼
XML sitemap 的對象是搜尋引擎的爬蟲,它提供一份結構化的 URL 清單,讓爬蟲知道站內有哪些重要頁面值得抓取。但提交清單不等於保證收錄,Google 會自行判斷頁面品質與重要性。HTML sitemap 的對象則同時包含使用者與搜尋引擎,它本質上是站內導覽的延伸,讓訪客在沒有麵包屑或選單連結的地方,仍能找到深層頁面。對小型網站來說,HTML sitemap 可補強導覽;大型網站若把所有 URL 塞進單一頁面,可能難以使用與維護,但不能直接宣稱它會稀釋排名權重。
robots.txt 的 Sitemap directive 只做一件事:宣告 XML sitemap 的所在位置。它不參與 URL 的內容判斷,也無法修復 sitemap 本身的格式錯誤或 404 問題。IndexNow 則走完全不同的路徑,它主動向支援此協定的搜尋引擎推送 URL 變更通知,適合內容頻繁更新的網站。IndexNow 現行參與搜尋引擎清單未列 Google,因此它不能取代 Google Search Console 的 sitemap 提交與狀態監控。
搭配邏輯:讓每個管道處理它擅長的那一層
實務上,這四個管道不是擇一使用,而是分工合作。XML sitemap 是核心,負責把完整的 URL 清單交給所有主流搜尋引擎;robots.txt 的 Sitemap directive 作為備援,讓爬蟲即使沒有 GSC 提交紀錄,也能從網站根目錄找到 sitemap。HTML sitemap 則回歸使用者體驗,放在頁尾或導覽不易觸及的地方,協助訪客與爬蟲建立站內連結路徑。IndexNow 適合在內容發布當下立即通知 Bing 等引擎,縮短新頁面被發現的延遲。
一個常見的錯誤是把 IndexNow 當成 XML sitemap 的替代品,或者把 HTML sitemap 當成 SEO 排名工具。實際上,IndexNow 只負責通知,不負責索引品質判斷;HTML sitemap 的價值在於導覽與內鏈分配,不在於提交清單。正確的搭配是:XML sitemap 作為長期穩定的 URL 清單來源,robots.txt 宣告其位置,IndexNow 加速更新通知,HTML sitemap 補強站內可達性。四者各司其職,才能讓該收錄的頁面被發現。 延伸閱讀:robots.txt 是什麼。
| 管道 | 主要對象 | 適合用途 | 限制 |
|---|---|---|---|
| XML sitemap | 搜尋引擎 | 提交重要 URL 清單 | 不是索引保證 |
| HTML sitemap | 使用者與搜尋引擎 | 補強導覽與內鏈 | 大型網站容易變成低品質清單 |
| robots.txt Sitemap directive | 爬蟲 | 宣告 sitemap 位置 | 不能修復 sitemap 本身錯誤 |
| IndexNow | 支援 IndexNow 的搜尋引擎 | 通知 URL 新增、更新、刪除 | 不能取代 GSC 或 XML sitemap |
如何提交 sitemap 到 Google Search Console
提交 sitemap 到 Google Search Console(GSC)前,你必須先確認這份 sitemap 是「可公開讀取」的資源,而不只是存在於伺服器上的檔案。具體來說,你提交的 sitemap URL 必須能在未登入任何帳號的狀態下直接開啟,伺服器回傳 HTTP 200 狀態碼,內容是結構完整的 XML,且清單中的 URL 符合 sitemap 位置與資源範圍;若要做跨站提交,必須依 Google 的跨站 sitemap 規則驗證相關網站所有權。這項確認之所以重要,是因為 Google 必須能在不使用網站登入狀態的情況下抓取 sitemap;若資源需要驗證或阻擋搜尋引擎存取,就可能無法讀取,提交後只會得到「無法擷取」的錯誤,而這個錯誤往往不是格式問題,而是存取權限問題。
在 GSC 中提交 sitemap 的操作流程本身並不複雜:選擇正確的 property(網域資源或網址前置字元資源),進入左側「Sitemaps」報表,在「新增網站地圖」欄位輸入 sitemap 的路徑(例如 sitemap.xml),點擊送出後等待 Google 排程抓取。Google 的 Sitemaps report 說明 文件會列出提交後的狀態欄位,包括「成功」、「無法擷取」、「有錯誤」等,你可以用這些狀態來判斷 Google 是否真的讀到了你的檔案。但要注意,提交動作本身只是「通知」,不代表 Google 會立刻或保證收錄清單中的所有 URL,後續仍需觀察「已發現的 URL」數量是否與你預期相符。
提交前逐項檢查:每個確認背後的判斷原因
許多站長在提交 sitemap 時,只檢查「檔案能不能開」,卻忽略了 URL 層級的細節,導致提交後出現大量「已發現但未檢索」或「重複內容」的狀態。第一個要確認的是 sitemap URL 的狀態碼必須是 200,且內容不能是 HTML 錯誤頁。這背後的判斷原因是:有些伺服器在找不到檔案時會回傳 200 加上一個「404 Not Found」的 HTML 頁面,這種情況稱為 soft 404,Google 會認為你的 sitemap 是有效的,但實際解析時卻找不到任何 URL,最終顯示為「有錯誤」或「無法讀取」。因此,你應該用 curl 或瀏覽器的無痕模式直接開啟 sitemap URL,確認回傳內容是可解析的 sitemap,而不是 HTML 錯誤頁;Content-Type 可作診斷線索,但不能把兩個 MIME 值寫成唯一接受條件。
第二個要確認的是 一般情況下 sitemap 應列出與其位置相符的 canonical URL;Google 也支援在相關網站所有權都經驗證後的跨站 sitemap,因此不能把「同網域與協定」寫成沒有例外的規則。這背後的判斷原因是:sitemap 是「建議清單」而非「指令」,但 Google 會將 sitemap 中的 URL 視為你希望被索引的頁面;若清單中同時存在 http 與 https 版本,或包含跨子網域的 URL,這會讓提交清單與 canonical 意圖不一致;是否因此影響抓取或收錄速度,不能由 sitemap 清單直接判定。更實際的做法是:在提交前,先從 sitemap 中抽出所有 URL,用試算表比對每一條的協定、網域與路徑是否一致,並確認每一條 URL 都能回傳 200 且沒有被 noindex 標記。若你發現某些 URL 回傳 301 或 404,應先修正網站內部連結或重新導向規則,再更新 sitemap,而不是直接把錯誤 URL 留在清單中提交。
第三個要確認的是 sitemap 清單的組成是否以 canonical、indexable、重要頁面為主。這背後的判斷原因是:sitemap 的價值在於「引導 Google 優先檢索你認為重要的頁面」,而不是把所有 URL 都塞進去。若你把帶有參數的追蹤 URL、分頁頁面、或已被 noindex 的標籤頁都放進 sitemap,這會增加提交清單與實際索引意圖的矛盾;Google 沒有公開一個可量化的「整份 sitemap 信任分數」,不應如此推論。實務上,你應該先建立一份 URL inventory(網址清單),標註每一條 URL 的 canonical 狀態、是否被 noindex、是否為重要內容,然後只挑選「canonical 指向自己、沒有 noindex、且是主要內容」的 URL 放入 sitemap。這樣做的好處是,當你在 GSC 的 Sitemaps 報表中看到「已發現的 URL」數量時,你可以直接比對這份清單,快速判斷是否有遺漏或錯誤。
完成上述確認後,你才進入 GSC 的 Sitemaps 報表提交 sitemap 路徑。提交後不要只看「成功」兩個字,你必須觀察三個關鍵數據:已發現的 URL 數、最後讀取時間、以及錯誤訊息。已發現 URL 是 Search Console 對 sitemap 的統計,與檔案總數有落差時要查看 sitemap 狀態、格式、擴充項目與實際清單,不能直接判定是重複 URL。最後讀取時間表示 Google 最近一次處理該檔案的時間;若長期未更新,再檢查檔案是否真的變更、伺服器紀錄與 GSC 訊息。修正檔案後可重新提交一次驗證,不要反覆送出未變更的檔案。
AK Sitemap Submission Loop:提交後要看哪些狀態
AK Sitemap Submission Loop 是把 sitemap 從一次性設定,變成可重跑的技術 SEO 迴圈。流程是:盤點 URL、生成 XML、公開發現、提交 GSC、監控狀態、清理錯誤。每次改版、批次發文、刪頁、換 CMS、調 URL 規則時,都應該重跑一次。這個 loop 的重點不是每天重交 sitemap,而是讓 sitemap 跟網站真實狀態保持一致。當 GSC 顯示 sitemap 可讀,但頁面仍然沒有收錄,你就要往爬取、索引、canonical、noindex、內容品質等層面排查。這時可接著看 Google 爬取與索引診斷,把問題拆到發現、爬取、索引與顯示各層。
監控階段的三個關鍵狀態:已發現、最後讀取、錯誤數
提交 sitemap 之後,GSC 的「已發現 URL」數字會告訴你 Google 從這份 sitemap 中看到了多少條 URL。這個數字應該要接近你實際提交的數量;如果明顯少很多,代表 sitemap 檔案本身可能被截斷、格式錯誤,或部分 URL 因為重複而合併計算。你需要先確認 sitemap 的 XML 結構是否完整,再檢查是否不小心把同一個 URL 以不同參數或大小寫形式重複列出。
「最後讀取」時間戳記則反映 Google 最近一次成功抓取這份 sitemap 的時間。如果這個時間一直停留在過去,且沒有更新,表示 Google 可能無法穩定存取你的 sitemap URL,例如伺服器回應過慢、檔案超過 50MB 上限,或 sitemap 放在需要登入的目錄下。此時你應該用無痕視窗直接開啟 sitemap URL,確認伺服器回應狀態碼是 200,並檢查回應時間是否在合理範圍內。
「錯誤數」是監控階段最需要主動追蹤的數字。錯誤數從零開始增加,通常代表網站結構變動後沒有同步更新 sitemap,例如刪除了頁面但 sitemap 仍保留舊 URL,或將頁面改成 noindex 卻沒有從 sitemap 移除。錯誤數不一定要降到零才算正常,但必須每一項都能解釋原因,且趨勢是逐步下降。若錯誤數持續上升,代表你的清理動作沒有跟上變動速度,應該回頭檢視 URL inventory 的更新流程。
從監控狀態往下排查的觸發條件
當 GSC 顯示 sitemap 狀態為「成功」或「可讀取」,但「已發現 URL」與「實際收錄頁面」之間出現明顯落差時,這就是往下排查的觸發條件。此時 sitemap 本身已經完成任務,問題不在提交環節,而在頁面層級的索引訊號。你應該隨機抽樣比對 sitemap 中的 URL 與 GSC 的「網頁索引」報表,找出哪些頁面被標記為「已發現但未編入索引」,再針對這些頁面檢查 canonical 標籤是否指向自己、是否有 noindex 指令、內容是否過於單薄或與其他頁面重複。
另一個觸發條件是「最後讀取」時間正常,但「已發現 URL」數量突然大幅下降。這通常不是 Google 主動移除你的頁面,而是 sitemap 檔案內容被改壞了,例如 CMS 的自動化程式在更新時誤刪了大部分 URL,或 sitemap index 指向的子檔案其中一個回傳 404。此時你應該先檢查 sitemap 檔案本身是否完整,再確認所有子 sitemap 的 URL 是否都能正常回應,最後比對伺服器日誌確認 Googlebot 是否有成功抓取這些檔案。
當錯誤清單中出現大量「404」或「重新導向」時,代表清理階段沒有跟上網站變動。404 URL 應從 sitemap 移除;只有存在內容與用途真正對應的替代頁時才做 301。流量或外部連結可影響遷移優先序,但不能合理化轉址到只是「最接近」的不相干頁面。重新導向錯誤則要檢查是否形成重新導向鏈,例如 A 導向 B、B 再導向 C,這種情況應該把 sitemap 中的 URL 直接改成最終目的地,減少 Googlebot 的追蹤成本。清理並更新 sitemap 後,可在 GSC 重新提交一次或等待 Google 定期重讀,再確認狀態是否改善。
| Loop 階段 | 檢查問題 | 可接受狀態 |
|---|---|---|
| 盤點 URL | 哪些 URL 值得提交 | 只列重要且可索引頁面 |
| 生成 XML | 格式、lastmod、sitemap index 是否正確 | 可公開讀取且符合格式 |
| 公開發現 | robots.txt 是否宣告 sitemap | 搜尋引擎可找到 sitemap URL |
| 提交 GSC | 是否提交到正確 property | GSC 能讀取 sitemap |
| 監控狀態 | 已發現 URL、最後讀取、錯誤數 | 錯誤可解釋且逐步下降 |
| 清理錯誤 | 404、redirect、noindex、重複 URL | sitemap 回到乾淨清單 |
AK 一手觀察:AKSEO Labs 自己網站的 sitemap 修復
AKSEO Labs 在 2026 年 7 月 21 日修過自己網站的 sitemap,同一輪處理了重複 URL 與 lastmod 造假這兩個問題。這不是拿來當案例炫耀,而是把過程和結果整理成證據卡,方便你比對自己網站要檢查的項目。修復的對象是 akseolabs.com,一個由 Directus CMS 驅動的 Astro 靜態站,不是客戶站。觀察窗口從 7 月 21 日修復並完成線上驗證,到本文撰寫的 7 月 22 日;收錄與排名效果需要更長的觀察窗,本文撰寫時尚未有第二輪資料,原稿把證據狀態標為 Observed;本輪只找到文章內的內部紀錄敘述,未取得獨立原始 receipt,因此以下數字應標成 Internal record,不對收錄或排名效果作因果結論。
重複 slug 與 lastmod 造假的具體樣本
重複 slug 問題的樣本是 42 個已發布文章列,修復前有 42 個唯一 slug,但其中 4 組 slug 各被兩篇文章佔用,共 8 篇受影響。這代表同一個查詢任務在 sitemap 中同時有兩個候選網址,搜尋引擎必須自行判斷哪一個才是該收錄的版本,等於把去重的工作丟給對方。lastmod 問題的樣本則是修復前 sitemap 中 46/69 筆網址有 lastmod,全部是文章網址,另外 23 筆靜態或工具頁完全沒有 lastmod;更糟的是,那些有 lastmod 的文章網址,日期來源是發布日,不是真實更新日,等於對外宣稱「這頁從發布後沒改過」,但實際上內容可能已經調整過多次。
變更槓桿是兩項修復同時進行。第一項是用 Directus PATCH 把每組重複 slug 中較弱的一篇文章改成 archived 狀態、保留較強版本 published,不刪除任何資料列;第二項是把 sitemap 產生程式的 lastmod 來源從發布日改成 Directus 的真實更新日欄位,並替原本缺 lastmod 的靜態頁補上這個欄位。PATCH 後即時查詢顯示 42 個 published 列、42 個唯一 slug、0 筆重複;sitemap.xml 用 cache-buster 查詢回傳 65 筆網址,每個目標 slug 只出現一次;部署後線上 sitemap.xml 的 42 個文章網址區塊全部含 lastmod,例如某篇文章的 lastmod 顯示的是實際更新日,不再是發布當天。
這項修復證明了什麼,以及它的限制
AK 判讀是:依原稿引用的 2026-07-21 內部工作紀錄,這最多支持 sitemap 清單與 lastmod 的變更;本輪未取得獨立原始 receipt,因此數字應視為內部紀錄、不可升格為已獨立驗證案例,也不代表 Google 因此改變收錄或排名。重複 slug 曾經讓同一個查詢任務同時有兩個候選網址出現在 sitemap,lastmod 造假則會讓更新訊號不可信;這兩點清乾淨之後,至少不會再送出互相矛盾或失真的訊號給搜尋引擎。但這張證據卡刻意不寫「sitemap 修好之後收錄變快」這種結論,因為目前只查到 sitemap 清單本身變乾淨、lastmod 開始說實話,對收錄與排名的實際影響還需要更長的觀察窗才能驗證,不能現在就宣稱成效。
替代解釋也必須納入考量:重複網址原本也可能部分靠 canonical 標籤自我修正,不是完全依賴 sitemap 去重;日後如果 GSC 或流量數字出現變化,也可能來自同期的其他改版、演算法更新或正常波動,不能只歸因這次 sitemap 修復。什麼情況會推翻此推論?如果之後追蹤同一批網址,排除其他變因後,收錄狀態、爬取頻率或排名在合理觀察窗內完全沒有變化,就代表這次修復只是清單衛生工作,不能再拿來當有效的 sitemap 品質案例。同樣的理由,這篇文章也不會寫「提交 sitemap 後 3 到 7 天生效」或「AI 決定要不要深入爬取」這類說法,因為沒有可查核的一手來源支持精確天數,也沒有證據支持用 AI 判斷爬取深度的機制;前面 FAQ 對「多久會收錄」維持沒有固定時間的答案,就是同一個理由。更完整的方法紀錄與其他自有實驗,收在 AK SEO Labs 的 證據總覽。
常見 sitemap 錯誤:Couldn’t fetch、404、跨網域與重複 URL
當你在 Google Search Console 看到 sitemap 錯誤時,第一步不是急著修改 URL 清單,而是先判斷錯誤發生在哪一層:Google 根本讀不到 sitemap 檔案,還是讀得到檔案但裡面的 URL 清單有問題。這兩種情況的排查順序完全不同,混在一起處理只會浪費時間。檔案層錯誤會讓 Google 完全無法取得你的網站地圖,而 URL 清單層錯誤則代表 Google 已經成功下載檔案,但裡面的內容不符合收錄標準。
先排查檔案層錯誤:Couldn’t fetch、404 與 XML parsing error
檔案層錯誤的共同特徵是 Google 無法取得或解析 sitemap 檔案本身。最常見的 Couldn’t fetch 錯誤,原因可能是路徑打錯、伺服器暫時拒絕連線、CDN 快取了錯誤回應,或是 robots.txt 阻擋了 Googlebot 存取 sitemap。排查時先用瀏覽器直接開啟 sitemap URL,確認回傳 200 狀態碼且內容是 XML 格式,再用 curl 指令模擬 Googlebot 的請求,檢查伺服器回應是否一致。若瀏覽器正常但 curl 失敗,問題多半出在 User-Agent 過濾或 WAF 規則。
404 錯誤則相對單純,通常是 sitemap 檔案根本不存在於部署路徑,或 build 輸出位置與網站根目錄路由不一致。靜態網站生成器(如 Astro、Next.js)特別容易發生這個問題,因為輸出目錄可能被設定為 dist/ 或 public/,但伺服器只服務根目錄。XML parsing error 則代表檔案格式破損,常見原因包括特殊字元未做 escape(例如 & 寫成 &)、輸出時被 HTML 標籤污染,或檔案編碼不是 UTF-8。用 XML validator 檢查原始碼,通常能立刻定位到第一個錯誤行。
伺服器穩定性也會造成間歇性的 Couldn’t fetch。如果 sitemap 偶爾讀取成功、偶爾失敗,要檢查主機回應時間與 CDN 快取設定。這不等於 PageSpeed 分數問題,但當伺服器狀態不穩時,可以延伸檢查 PageSpeed Insights 指標中的 TTFB 與伺服器回應時間,確認是單一檔案問題還是整體主機效能瓶頸。
再處理 URL 清單層錯誤:跨網域、重複 URL 與大量 redirect
當 Google 成功讀取 sitemap 檔案,卻在清單中發現不合格的 URL,就會回報跨網域、重複或 redirect 等錯誤。跨網域錯誤代表 sitemap 中列入了其他網域或不同 GSC property 的 URL,例如在 example.com 的 sitemap 中放入 www.example.com 或 blog.example.net 的頁面。修正方式是拆分 sitemap,讓每個網域或子網域各自維護獨立的 sitemap,並提交到對應的 GSC property。若網站同時有 http 與 https 版本,也要確認 sitemap 中只列最終使用的協定版本。
重複 URL 與大量 redirect 錯誤通常來自舊網址未清理乾淨。當網站改版或遷移路徑後,sitemap 中仍殘留舊的 URL,Google 可以追蹤 redirect,但 sitemap 應直接列最終 canonical URL,讓提交清單與遷移結果一致;不能在沒有量測時斷言必然浪費 crawl budget 或延遲收錄。正確做法是直接在 sitemap 中列出最終的 canonical URL,而不是讓 Google 自行追蹤 redirect。若網站有大量頁面需要重新導向,應先完成 301 對應,再更新 sitemap 清單,避免兩者狀態不一致。
URL 清單層的錯誤還包括列入了 noindex 頁面、被 robots.txt 阻擋的頁面,或回傳 4xx/5xx 狀態碼的頁面。這些 URL 雖然格式正確,但不符合可索引條件,Google 會忽略它們並在「已發現但未收錄」或「已排除」報表中標記。排查時先確認 sitemap 中的 URL 是否都能直接回傳 200,再檢查頁面是否設定 noindex meta tag 或 canonical 指向其他頁面。若發現大量錯誤狀態碼,代表 URL inventory 沒有即時更新,應回頭檢視內容管理流程,確保已刪除或合併的頁面不會殘留在 sitemap 中。
CMS、Astro、WordPress 網站怎麼自動化 sitemap
多數網站不該手動維護 sitemap。只要頁面會新增、下架、改 slug 或改分類,sitemap 就應該跟內容來源同步,否則提交給 Google 的 URL 清單很快就會與實際網站脫節。WordPress 通常可用核心 sitemap 或 SEO 外掛產生;Headless CMS 要從文章、分類、服務頁資料生成;Astro 或其他靜態站則要在 build 時輸出 sitemap,並確認部署後路徑真的在網站根目錄可讀。
自動化 sitemap 的核心不是產生檔案,而是產生正確 URL 清單。 例如 Astro 網站若只有文章 sitemap,卻漏掉 tools、services 或其他靜態頁,搜尋引擎仍可能靠內鏈找到,但你的 sitemap submission report 就看不到那些頁面的提交狀態。這也是 sitemap 檢查要和 URL 結構規劃 一起看的原因,因為 URL 清單的品質直接取決於路由設計是否一致。
build-time 輸出與 runtime 生成的機制差異
靜態網站與伺服器端渲染網站的自動化路徑不同。Astro、Eleventy 或 Next.js 靜態匯出屬於 build-time 輸出:建置過程會掃描專案內的頁面元件與內容集合,在部署前就寫好 sitemap.xml。這種方式的優點是檔案內容可預測、載入速度快,且不會因請求而變動;缺點是每次新增頁面都必須重新觸發 build,若內容散落在多個資料來源,就必須在 build 腳本中明確合併所有路由來源,否則漏頁問題會直接反映在 sitemap 上。
WordPress 或一般 PHP 網站則多採 runtime 生成:伺服器收到 sitemap.xml 請求時,才從資料庫即時查詢文章、頁面與分類狀態並輸出 XML。這種方式能反映最新發布或下架的內容,不需等待重新部署,但要注意快取設定,否則每次請求都查詢資料庫會拖慢回應;同時也要確保外掛或主題更新不會意外關閉 sitemap 端點。選擇哪一種機制,取決於你的發布頻率與部署流程:內容每天變動的網站適合 runtime,內容在 merge 時才確定的專案則適合 build-time。
| 網站類型 | 自動化重點 | 常見漏點 |
|---|---|---|
| Astro 靜態站 | build 時輸出所有正式路由 | 工具頁、分類頁、動態集合漏列 |
| WordPress | 確認文章、頁面、分類 sitemap 是否開啟 | 附件頁、標籤頁、薄內容 taxonomy 混入 |
| Headless CMS | 從發布狀態與 slug 欄位生成 | draft、redirect、舊 slug 沒排除 |
| Ecommerce | 依庫存、canonical、分頁規則拆分 | 停售商品與篩選參數頁膨脹 |
如果你要做的是全站 technical SEO health check,sitemap 只是其中一層。AK SEO Labs 的 SEO 服務 可涵蓋技術 SEO 問題盤點、技術 SEO 基礎與月度策略調整;sitemap、robots、GSC、canonical、URL 結構、速度或索引狀態是否列入,以及實際執行範圍,仍以服務頁約定為準,不保證全數包含。
FAQ:sitemap 常見問題與正確處置方式
以下十題集中處理 sitemap 的排名、索引、位置、GSC、IndexNow 與更新邊界;所有時程與效果都不作保證。
Sitemap 會直接提升排名或保證收錄嗎?
不會。Google 把 sitemap 視為 URL 發現線索;提交只是一項提示,不保證下載、抓取、索引或排名。頁面仍要可存取、允許索引,並由搜尋系統另行判斷。
小網站一定需要 sitemap 嗎?
不一定。若網站規模小、內鏈完整且每個重要頁面都容易被發現,Google 表示可能不需要 sitemap;但建立與自動維護一份正確 sitemap 通常仍有助於監控。
Sitemap 可以放 noindex 頁面嗎?
不建議。sitemap 應列出希望出現在搜尋結果中的 canonical URL;noindex 表示不希望該頁建立索引,兩者意圖矛盾。先從 sitemap 移除 noindex、404 與 redirect URL。
sitemap.xml 一定要放在網站根目錄嗎?
不一定,檔名也不必固定。位置會影響 sitemap 可涵蓋的 URL 範圍;最常見的根目錄位置較容易管理。無論放哪裡,都要用完整 URL、可公開抓取並符合 sitemap 位置規則。
robots.txt 裡要寫 Sitemap directive 嗎?
可以。Sitemap directive 提供另一條 sitemap 發現路徑,但不能修復 XML、伺服器或 URL 清單錯誤,也不保證 URL 被索引。GSC 提交則能提供 sitemap 層級狀態,兩者可以並行。
GSC 顯示 Couldn’t fetch 要怎麼排查?
先看 GSC 的實際訊息,再確認 sitemap URL 公開回傳、DNS 與伺服器正常、CDN 或 WAF 沒有阻擋 Google 的抓取請求,以及內容是可解析的 sitemap 而非 HTML 錯誤頁。只偽裝 Googlebot User-Agent 不能完成驗證。
Sitemap 提交後多久會收錄?
沒有固定時間。提交 sitemap 只提供發現線索;抓取與索引還會受伺服器狀態、robots、noindex、canonical、內鏈、重複 URL、頁面內容與搜尋系統排程影響。請觀察可比較期間,不要承諾數小時、數週或固定兩週門檻。
HTML sitemap 還有用嗎?
在導覽或網站架構不易讓使用者找到重要頁面時可能有用。它應按主題與層級組織,而不是堆出全站 URL 清單;也不能被描述成可直接分配排名權重。
IndexNow 可以取代 XML sitemap 嗎?
不行。IndexNow 向參與協定的搜尋引擎通知 URL 新增、更新或刪除;XML sitemap 提供網站的 URL 清單。IndexNow 現行參與搜尋引擎清單未列 Google,因此不能取代 GSC 與 XML sitemap。
Sitemap 多久更新一次?
沒有固定週期。重要 URL 新增、刪除、改址或內容重大更新時,應讓 sitemap 自動同步並提供準確 lastmod。Google 會定期重新讀取已提交的 sitemap,通常不必每次變更都人工重交;檢查頻率依網站變動量與風險設定。
sitemap 做好之後的下一步
當 sitemap 正確產出、提交並通過 Search Console 的狀態檢查之後,你的工作並沒有結束,而是從「檔案製作」轉向「持續驗證」。sitemap 只是告訴搜尋引擎你有哪些 URL 值得探索,它不保證這些頁面會被收錄,更不保證收錄後有好的排名。下一步的實質任務,是建立一套以 sitemap 為起點的全站技術 SEO 健康度檢查流程,確認每一條送進 sitemap 的 URL,在 robots、canonical、內部連結與實際索引狀態上都互相一致。
從 sitemap 清單回頭檢查 robots 與 canonical 的一致性
sitemap 裡列出的每一條 URL,都應該同時滿足三個條件:該 URL 沒有被 robots meta 或 X-Robots-Tag 設為 noindex、該 URL 的 canonical 指向自己(或指向一個你確實想讓搜尋引擎收錄的版本)、該 URL 回傳的狀態碼是 200 而不是 301 或 404。這三個條件只要有一個不符合,sitemap 就等於在向 Google 傳達矛盾的訊號:你一邊說「請收錄這頁」,另一邊又說「這頁不要被索引」或「這頁已經搬家了」。
實務上最常見的衝突,是 CMS 自動把 noindex 規則套用到某些模板頁面,但外掛或手動維護的 sitemap 仍把這些 URL 列進去。另一種常見情況是 http 與 https、www 與非 www 的版本同時出現在 sitemap,而伺服器端只對其中一個版本設定 200,另一個版本回傳 301。你不需要逐一人工點開每一條 URL,但至少應該在每次更新 sitemap 後,用伺服器日誌或爬蟲工具比對 sitemap 清單與實際回應的狀態碼、canonical 標籤、robots 指令,把不一致的 URL 優先處理掉。
這一步做完之後,你才會知道 sitemap 裡真正「乾淨」的 URL 有多少。乾淨的定義是:可以被 Googlebot 抓取、沒有被 noindex 阻擋、canonical 指向自己、狀態碼正常。這個數字才是你評估網站索引覆蓋率的基礎,而不是 sitemap 總行數。
用索引狀態回推 URL 結構與內容品質的缺口
當 sitemap 提交後,Search Console 的「網頁索引化」報表會顯示哪些提交的 URL 被收錄、哪些未被收錄,以及未收錄的原因分類,例如「已發現但尚未編入索引」「已編入索引但具有重複內容」「因 noindex 而排除」。這些分類不是拿來看看就結束的儀表板,而是你下一步行動的優先序清單。若大量 URL 未建立索引可能涉及伺服器容量、抓取、robots、canonical、重複內容、內鏈、內容或網站整體狀態;狀態名稱本身不能證明單一根因。
此時你該做的不是繼續追加 sitemap 條目,而是回頭審視 URL 結構與內容層級。檢查是否有多個 URL 因為參數(例如排序、篩選、追蹤碼)產生近乎重複的內容,導致 Google 只選擇其中一個代表 URL 收錄。檢查是否重要的服務或產品頁面缺乏從重要頁面可跟隨的內部連結,而首頁與主要分類頁的內部連結完全沒有指向它們。把這些發現整理成一份清單,區分「需要合併的 URL」「需要增加內部連結的頁面」「需要改善內容品質的頁面」,然後逐項處理。
這個階段的判斷基準很單純:sitemap 是你提供的 canonical URL 提示,網頁索引報表呈現 Google 的處理結果。兩者落差是診斷入口,但仍可能包含 sitemap 讀取、伺服器、robots、canonical、內容與站內連結等多種原因。
把 sitemap 維護納入例行監控,而不是一次性交付
sitemap 不是一份靜態檔案,它會隨著網站新增頁面、移除產品、調整分類而持續過期。若你只在改版時更新一次 sitemap,之後沒有讓檔案同步更新,新頁面就不會出現在該 sitemap;但已提交且持續更新的 sitemap 會由 Google 定期重新讀取,不必反覆人工提交。比較穩妥的做法是設定固定節奏:重要 URL 新增、刪除或重大更新時,應讓 sitemap 自動同步;已提交的 sitemap 不必每次都人工重交。Search Console 與 URL 狀態的檢查頻率依網站變動量和風險設定,週/月節奏只能標為團隊自己的營運方案。
例行監控的產出不是一份報告,而是一組可執行的規則。例如:當某個 URL 已不存在,就從 sitemap 移除;只有存在真正對應的替代內容時才做 301,不能因為最接近就任意轉址;當某個分類頁在一段有紀錄且可比較的期間仍未被索引,就檢查該分類是否內容過薄,或是否需要從首頁增加一條明確的連結。這些規則寫成文件後,即使負責的人更換,維護流程也不會中斷。
當你完成上述檢查與修正,你會得到一個相對穩定的索引狀態:sitemap 內的 URL 大多被收錄、收錄的 URL 大多有明確的 canonical、沒有大量的重複內容或 noindex 衝突。此時你才具備足夠的基礎,去評估更上層的 SEO 策略問題,例如哪些關鍵字值得投入內容資源、哪些頁面需要強化品牌訊號、哪些主題集群需要重新規劃。這些判斷涉及內容策略、競爭分析與資源分配,不是單靠 sitemap 技術就能解決的範疇。
要讓這套從 sitemap 到全站健康度的檢查流程真正落地,你需要有人同時具備伺服器端設定、CMS 模板修改、Search Console 判讀與內容策略規劃的能力。若你的團隊目前沒有這樣的人力配置,可以參考 SEO 策略藍圖的交付範圍與執行方式,確認其中包含的技術稽核與行動優先序是否符合你現階段的缺口。若你需要的不是一次性診斷,而是持續的監控與修正,則可以評估 SEO 成長顧問的月費合作模式,以技術 SEO 基礎與月度策略調整為範圍,定期檢視 sitemap 與索引狀態的變化,排定後續調整的優先順序;實際執行範圍仍以服務頁約定為準。
想先自己檢查:相關免費工具
先用這幾個工具把文章提到的項目對照一次,再回到你的網站情境閱讀結果。
想把技術檢查放回整體網站?
留下 Email,我會寄出合作方式與價格範圍;你可以先了解技術問題如何整理成工作順序,再決定是否回覆。
十年 SEO 實戰 · Threads 公開研究 · 隱私權政策