SEO優化

為什麼 XML sitemap 優化做對了,還是沒被收錄?

Search Console 的 Sitemap 報表打開,狀態欄一片「成功」,已探索的網址數字也對得上;過幾個星期回頭查「網頁索引」報表,卻發現一堆重要的產品頁、文章頁卡在「已找到,目前尚未建立索引」,幾個你根本不想被看到的測試頁反而先一步被收錄了。

問題通常不在有沒有交這份清單,而在清單裡混進了不該出現的網址。XML sitemap(網站地圖)是一份用 XML 格式寫成的網址清單,作用是主動告訴 Google 哪些頁面值得優先查看,本質上是一張推薦名單,不是網站的完整備份,多數人卻把能列的都列進去,這份名單也就失去了引導的意義。

Google 官方說得很明確,提交 sitemap 只是一種提示,不是命令,收不收錄終究由演算法決定;而 Google 願意花在每個網站上的檢索時間本來就有限,業界慣稱它爬取預算。把該拿掉、該補上的網址一一釐清,遠比死守 priority、changefreq 這些早就沒人看的欄位有用。先從 sitemap 在 Google 眼中扮演什麼角色講起。

Sitemap 是什麼?為什麼不是每個網站都非做不可?

先講一個常被搞混的地方,爬取(crawling)收錄(indexing)是兩件事,sitemap 影響的只是前者。Google 的爬蟲會順著網站內部的連結,一頁一頁把網站爬出來,如果內部連結結構健康,每個頁面都有路徑走得到,就算沒有 sitemap,Google 多半也能把網站摸清楚;收不收錄則是另一套演算法在判斷內容值不值得放進索引,兩件事不能混為一談。

sitemap 只在爬取階段主動提示 Google 哪些頁值得先看,收不收錄由另一套演算法決定,兩者不能混為一談
sitemap 碰得到的是爬取,不是收錄;把清單整理乾淨能幫爬蟲省力,卻不決定哪一頁被收錄。

那什麼時候該認真做 sitemap?Google 官方的說法是,網站規模不大、內部連結又健康的話,有沒有交這份清單差別不大,規模的參考門檻大約是五百個頁面以內。但只要符合下面任一種情況,就有必要花心力設定:網站頁面數量龐大、剛上線還沒什麼外部連結、內容經常更新或有大量影片圖片、或是有多語系版本。這幾種站的共通點是,Google 自己爬未必爬得完整,需要一份清單主動補位。

順帶一提,XML sitemap 是寫給搜尋引擎看的網址清單,跟放在網站上給真人瀏覽的 HTML 網站地圖是兩回事,兩者目的不同,別搞混。

哪些網址一放進 Sitemap,就是在給 Google 傳矛盾訊號

弄清楚 sitemap 只是提示、不是命令之後,接下來要處理的是清單裡放了什麼。一份乾淨的 sitemap 有一條鐵律,清單裡每個網址都該回傳 200 狀態、沒有 noindex,而且是你希望出現在搜尋結果裡的標準版本。反過來說,下面幾類網址只要混進去,就是同時對 Google 喊出兩種矛盾指令。

noindex 頁面、會轉址的網址、重複或非標準版本、回傳錯誤狀態碼這四類網址混進 sitemap,就是在對 Google 傳矛盾訊號
sitemap 該踢除的四類網址:掛 noindex、會轉址、重複版本、錯誤狀態碼;只放你敢讓它直接出現在搜尋結果的網址。

已經掛 noindex 的頁面

在某個頁面掛上 noindex,等於明確告訴 Google 這頁不要收錄,同一時間又把它列進 sitemap,等於在說這頁請你收錄。這種自相矛盾的訊號,不會讓 Google 兩邊都聽,只會讓它開始懷疑整份清單的可信度。標籤彙整頁、站內搜尋結果頁、感謝頁、後台登入頁,這幾類本來就該掛 noindex 的頁面,檢查一輪特別容易抓到漏網之魚。

會被導向別處的網址

如果某個網址 A 會被 301 或 302 導向到 B,sitemap 裡就該直接放最終目的地 B,不要放會跳轉的 A。讓 Google 多走一次轉址等於白白浪費檢索資源,這份資源對頁面量大的網站來說本來就有限,能省則省。

重複或非標準版本的網址

這是最容易被忽略的一類。同一篇內容如果因為網址參數、有無結尾斜線、分頁、http 與 https、有無 www 的差異,出現好幾個打得開的版本,只該把那個標準網址放進 sitemap,其他版本一律不放,並在重複頁面掛上 canonical 標籤指回標準版;分頁產生的網址(像是 /page/2/ 這種)通常也不值得單獨放進 sitemap,除非有明確理由要它被個別索引,多數情況把 canonical 指回第一頁或整合頁就好。把一堆重複網址全塞進去,不只讓檔案變大,還會讓 Google 分不清真正想收的是哪一個。

回傳錯誤狀態碼的網址

404 找不到、410 已經刪除、或是 5xx 這類伺服器錯誤的網址,當然也不該留在清單裡;還有一種更隱形的變體叫 soft 404,網頁明明沒有內容卻回傳 200 狀態,Google 官方也提醒這種頁面會讓爬蟲繼續白跑,一樣算在錯誤網址裡。這類網址常常是搬家、改版後留下的殘骸,定期清掉,sitemap 才會一直保持乾淨。

這幾類網址背後其實只有一個共通問題,敢不敢讓它原封不動出現在 Google 搜尋結果裡。敢,才放進去,其餘的全部請出去。

lastmod 才該認真填,priority 和 changefreq 早就不值得你花時間

把該踢除的網址清乾淨之後,剩下網址該怎麼標注,又是另一回事。很多 sitemap 產生器會自動幫你填三個欄位,lastmod(最後修改時間)、changefreq(更新頻率)、priority(優先程度),於是不少人以為把 priority 全設成 1.0、changefreq 全設成 daily,就能催 Google 多來抓幾次。這個觀念早就過時了。Google 在官方文件裡寫得很直接,它會忽略 priority 和 changefreq 這兩個值。原因不難理解,這兩個欄位被濫用得太嚴重,幾乎每個網站都把所有頁面的優先程度設到最高、更新頻率設成每天,資料一旦全部一樣就沒有資訊量,Google 乾脆不看,改用自己觀察到的頁面重要性與實際行為,去決定要不要抓、多久抓一次。

真正值得認真對待的是 lastmod。Google 確實會參考這個值,前提是它必須準確,而且可以被驗證,也就是 Google 會拿寫的時間去跟頁面實際的修改情況對照。這裡藏著一個很多人踩到的雷,有些產生器每次重新產生 sitemap,就把所有頁面的 lastmod 一律改成當下時間,明明內容根本沒動,時間卻天天在變;Google 對照幾次發現對不上,就會開始不信任這個訊號,最後乾脆整份都不看。

正確的做法是,lastmod 只反映頁面實質內容的最後變更日期。所謂實質變更,指的是主要內文、結構化資料、或頁面上的連結有了有意義的更新,把頁尾的版權年份從去年改成今年這種小動作,不算實質更新,不該去動 lastmod。舉例來說:

<url>
  <loc>https://www.example.com/blog/xml-sitemap-optimization/</loc>
  <lastmod>2026-06-18</lastmod>
</url>Code language: HTML, XML (xml)

這裡的 lastmod 只有在這篇文章的內文真的被改過一次的情況下才會更新,不是每次重新產生 sitemap 就跳成當天日期。把這個欄位填準,等於給 Google 一個可信的訊號,告訴它哪些頁面最近真的有變、值得回來重新抓一次。

塞爆的 Sitemap,會吃掉多少爬取預算?

priority、changefreq 調得再漂亮都沒用,真正該在乎的是 Google 願意花在網站上的檢索時間夠不夠。這件事業界稱為爬取預算,由兩個部分組成,檢索容量上限與檢索需求。容量上限跟伺服器健康度有關,回應速度快、沒有頻繁出錯,Google 才敢放心多派一點檢索連線過來;需求則跟網站規模、更新頻率、內容品質與熱門程度有關,跟同類型的其他網站相比,內容值不值得常常回來看,決定了 Google 願意分配多少時間。

Google 官方也誠實交代,這套精算主要是給規模夠大的網站看的,像是擁有超過一百萬個不重複頁面、內容變動頻率大概每週一次的大型網站,或是超過一萬個頁面、幾乎每天都在變動的中大型網站;如果網站沒有大量頻繁變動的頁面,或是新頁面通常在發布當天就被檢索到,其實不太需要花心力鑽研這一段,把 sitemap 維持在最新狀態、定期檢查索引涵蓋範圍就夠了。

不過即使是中小型網站,也有一個判準值得對照,Search Console 裡如果有大量網址被歸在「已找到,目前尚未建立索引」,就是爬取預算吃緊的訊號之一。Google 官方點名,網址庫的管理是網站主最能主動控制的因素,如果 Google 花太多時間檢索那些其實不重要、或是根本重複的網址,很可能就此判定網站其他部分不值得花時間查看,也不會提高預算來檢索網站。這正是為什麼 sitemap 裡塞進大量 noindex、重複、錯誤網址會反過來傷害真正重要的頁面,它們在跟一堆雜訊搶同一份有限的檢索時間。

大型網站的 Sitemap,怎麼拆才真正管用?

檢索預算有限,不代表把 sitemap 拆小就能無限換取更多時間,拆分真正要解決的是規模問題。Google 官方文件寫明,不論哪種格式,單一 sitemap 檔案在未壓縮的狀態下,大小不能超過 50 MB,網址數量不能超過 50,000 個。一旦超過,就得把它拆成好幾份,這時候登場的是 sitemap index(sitemap 索引檔)。

sitemap index 是一份目錄,本身不列網頁,只指向文章、產品、分類等子 sitemap;單一檔案上限 50 MB 或 5 萬個網址
超過單檔 50 MB 或 5 萬網址就用 sitemap index 統整多份子 sitemap,常見依內容類型、重要性或更新頻率拆分。

sitemap index 本身不直接列網頁網址,而是列出好幾份子 sitemap 的位置,像一份 sitemap 的目錄;把這份索引檔提交給 Google,它就會順著清單一份一份去讀子 sitemap。索引檔本身一樣有上限,Google 官方規定最多列 50,000 份子 sitemap,不過絕大多數網站離這個天花板還很遠。

實務上,拆分不只是為了不撞上限,更是為了管理和除錯方便。比較常見的拆法有三種:按內容類型分(文章一份、產品頁一份、分類頁一份),這樣哪一類頁面出問題,一眼就能定位;按重要性分,把首頁、核心分類頁放進同一份,次要或不常更新的頁面另外放一份;按更新頻率分,新聞或高頻更新的內容放一份、變動很少的靜態頁另外放一份,方便針對不同頁面設定不同的更新節奏。如果用 WordPress 搭配主流 SEO 外掛,通常會自動生成一個 sitemap index,再依文章、頁面、分類等類型切成多份子 sitemap,這套結構直接沿用就很合理。

如果 sitemap 裡還標記了圖片或影片,Google 官方也各自訂了數量規定。用標記方式把圖片加進現有 sitemap 時,每個網頁最多只能標記 1,000 張圖片;如果經營的是新聞型網站、要用新聞 sitemap,那份檔案最多只放 1,000 則新聞網址,而且只該包含近兩天內發布的內容,超過兩天就該從裡面移除。這些數字平常用不到,但一旦站點開始大量產出媒體內容,沒留意就會踩線。

送出前,這幾個 XML 格式錯誤最容易讓 Sitemap 直接解析失敗

前面談的都是網址該不該放,還有一層更基礎的問題是,檔案本身能不能被正確解析。sitemap 是一份 XML 檔案,網址裡如果出現 & 這種特殊符號卻沒有做實體逸出,寫成 & 而不是 &amp;,整份 XML 就可能直接解析失敗,Google 讀不到,等於白做。除了 & 之外,網址裡任何非 ASCII 字元或空白,也建議先做好百分比編碼,避免格式跑掉。

另一個常見疏漏是相對路徑,sitemap 裡的每個網址都要寫成完整的絕對網址,像 https://www.example.com/about,不能只寫 /about 這種省略網域的寫法,Google 會照著列出的網址原封不動去檢索,寫錯就等於帶錯路。檔案編碼也有硬規定,sitemap 必須用 UTF-8 編碼,這點多數 CMS 或外掛會自動處理好,手動維護的網站則要特別檢查。

還有一種更容易被忽略的狀況,sitemap 檔案本身回傳 403、404 或 500,或是被自己的 robots.txt 擋住,爬蟲根本連讀取這份清單的機會都沒有;這種設定錯誤在網站開發階段用 Disallow: / 封鎖過全站、上線後卻忘記解除時特別常見。確認方式很簡單,用瀏覽器登出後直接打開 sitemap 網址,看看是不是真的能正常顯示。

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://www.example.com/sitemap.xmlCode language: plaintext (plaintext)

上面這種寫法,robots.txt 封鎖後台路徑,但沒有連 sitemap 本身一起擋掉,是比較安全的配置;sitemap 的網址宣告放在檔案裡任何位置都可以,不受 User-agent 區塊限制。

交出去之後,Search Console 的哪些數字才是真正該看的?

格式跟位置都確認沒問題之後,真正要盯的是提交之後 Google 怎麼反應。狀態欄顯示成功,只代表 Google 成功讀到了這份 XML 檔案本身,不代表裡面列的每個網址都會被收錄;會不會收、什麼時候收,還是那句老話,由 Google 自己的演算法決定。真正該回頭確認的,是 Sitemap 報表裡「已探索」的網址數量,跟實際提交的網址數量對不對得起來,如果落差很大,通常代表清單裡有不少網址在讀取階段就被排除掉了。

再往下一層,把「網頁索引」報表用 sitemap 篩選,比對「已提交」跟「有效」的數量,這個缺口才是判斷 sitemap 有沒有真的發揮作用的關鍵。如果一堆網址卡在「已找到,目前尚未建立索引」,通常是前面幾節提到的問題疊在一起,清單裡混了太多不值得收錄的網址,拖累了 Google 對整個網站的檢索意願,也可能是頁面本身內容單薄,Google 判斷不划算收進索引。

Search Console 從已提交、已探索到已建立索引層層遞減,卡在「已找到,目前尚未建立索引」常是爬取預算吃緊或內容單薄
狀態顯示成功只代表 Google 讀到 XML;真正要盯的是已提交、已探索、有效之間在哪一關流失。

至於多久會被抓取、被收錄,這題沒有標準答案。提交之後 Google 通常會在幾天內讀取 sitemap,但讀到不等於立刻收錄裡面每一頁,新頁面從被發現到真正進索引,可能幾天,也可能更久,取決於網站的權重、內容品質、以及這個頁面本身的重要性。sitemap 一旦被成功讀取,Google 會自己定期回來檢索,不必每天盯著重新送;重複提交同一份沒有變動的 sitemap,並不會加快收錄。

Sitemap 對 Google 以外的 AI 爬蟲來說,是不是同一張地圖?

前面談的每一條,焦點都放在 Googlebot 身上,但現在會讀這份清單的不只它一個。除了 Googlebot,現在檢索網站的還有一整批具名的 AI 爬蟲,像是 OpenAI 的 GPTBot、Anthropic 的 ClaudeBot、Perplexity 的 PerplexityBot,以及 Google 自己另外用來訓練 AI 的 Google-Extended。這些爬蟲各家都有公開文件說明自己的身分與行為,而 robots.txt 裡宣告 Sitemap 位置這件事,本來就是所有遵循這套公開協定的爬蟲共通讀得到的入口,不是 Google 專屬。

換句話說,為了 Googlebot 整理乾淨的那份 sitemap,某種程度上也是在為其他爬蟲鋪路。內容結構清楚、標題與段落有明確主張、資訊容易被抽取,才是決定會不會被 AI 生成的回答引用的關鍵,sitemap 只負責解決這個頁面爬得到、爬得對版本這個更基礎的前提,它不會讓內容變得更容易被引用,但如果連讓爬蟲找到都做不到,後面談引用就是空談。

至於要不要放行這些 AI 爬蟲,是另一個層次的決定,跟訓練資料授權、內容授權有關,不在這篇的討論範圍。但如果目標是讓內容有機會出現在 AI 搜尋的引用來源裡,至少要確保 robots.txt 沒有把它們一併擋掉,而 sitemap 依然是那份「這些頁面值得優先查看」的推薦名單,不管讀它的是哪一種爬蟲,乾淨、準確、只放真正想被看到的頁面,都是同一套邏輯。

Sitemap 做得再乾淨,也只是打通了被發現這一關,不會直接把排名往上推,更不會保證每個列進去的網址都被收錄。它真正做到的,是讓 Google 跟其他爬蟲把時間花在對的地方,不必在孤兒頁與雜訊裡瞎繞。把這份推薦名單維護好,是最基本、也最容易被忽略的技術門檻,之後要拚的內容深度、使用者體驗與內部連結,才是決定一個頁面最終能不能被優先收錄、進而排到前面的關鍵。

常見問答

本區問答由 AI 依文章內容自動整理,僅供快速參考,正式內容仍以全文為準。

什麼規模的網站可以不用特別做 XML sitemap?

網站規模不大、內部連結健康的話,做不做 sitemap 差別不大,Google 多半能自行爬完。但頁面數量龐大、剛上線缺外部連結、內容常更新或有多語系版本,就有必要認真設定。

掛了 noindex 的頁面該不該收進 sitemap?

不該。noindex 是要求 Google 別收錄該頁,放進 sitemap 卻等於要求收錄,兩種指令互相矛盾,只會讓 Google 開始懷疑整份清單的可信度。

priority 設最高能加快收錄嗎?

不能。Google 官方明確表示會忽略 priority 與 changefreq 這兩個欄位,因為幾乎所有網站都把每個頁面設成最高優先、每天更新,資料因此失去參考意義。Google 改用自己觀察到的頁面重要性來決定抓取。

什麼是爬取預算?

爬取預算是 Google 願意花在一個網站上的檢索時間,由檢索容量上限與檢索需求兩部分組成。前者跟伺服器回應速度、錯誤率有關,後者跟網站規模、更新頻率與內容品質有關。兩者一起決定 Google 分配多少時間來抓取網站。

sitemap 狀態顯示成功,代表都收錄了嗎?

不代表。狀態顯示成功只表示 Google 成功讀到這份 XML 檔案,收不收錄由演算法另外判斷。真正該看的是 Sitemap 報表裡已探索的網址數量,以及網頁索引報表中已提交與有效數量的落差。

資料來源
  1. Learn about sitemaps — Google Search Central
  2. Build and submit a sitemap — Google Search Central
  3. Manage your sitemaps with a sitemap index file — Google Search Central
  4. Optimize your crawl budget — Google Search Central
  5. Image sitemaps — Google Search Central
  6. News sitemaps — Google Search Central
  7. How Google Interprets the robots.txt Specification — Google Search Central