新站文章寫好了卻遲遲沒被收錄,最直接的補救是建立一份 sitemap.xml,再到 Google Search Console 的 Sitemap 報告提交網址。sitemap.xml 提交的作用,是把「網站上有哪些頁面」整份交給 Google,讓還沒有外部連結指向的新頁面也能被發現,不必等 Googlebot 沿著連結慢慢爬到。
先講清楚它做不到的事:Google 官方把提交 sitemap 定位成「只是一個提示」,也不保證清單上的每個網址都會被檢索、收錄。sitemap 解決的是「Google 不知道頁面存在」,解決不了內容品質或技術設定造成的不收錄。
整個流程分三步:建立檔案、上線前檢查、到 Search Console 提交。下面依序拆解。
先確認:你的網站需要 sitemap 嗎?
Google 的 sitemap 說明列出幾種特別需要的情況,其中一種正是外部連結很少的新網站:沒有其他網站連過來,Googlebot 就少了發現頁面的入口。反過來,約 500 頁以內、內部連結完整到從首頁點得到每一頁的小站,官方認為不一定需要。
不過建立 sitemap 沒有壞處,多數 CMS 也會自動產生。對新站來說,實際的問題通常不是「要不要」,而是「現有的 sitemap 對不對、交了沒」。內部連結的部分可以參考文章少的新站怎麼串內鏈。
第一步:建立 sitemap.xml
依網站類型選做法
| 網站類型 | 做法 | 預設網址 |
|---|---|---|
| WordPress 5.5 以上 | 核心內建,自動產生,不用另外安裝外掛 | /wp-sitemap.xml |
| Next.js(App Router) | 在 app 目錄放 sitemap.ts,回傳網址陣列 | /sitemap.xml |
| 靜態網站、自架網站 | 依 sitemap 協定手寫 XML,或用產生器輸出後上傳 | 自訂,建議放根目錄 |
← 左右滑動看完整表格 →
WordPress 的 sitemap 從 5.5 版開始內建,並會自動寫進 robots.txt。有一個常見陷阱:後台「設定 → 閱讀」勾了「阻擋搜尋引擎索引這個網站」,內建 sitemap 就會被停用。新站施工期間常勾這個選項,正式上線忘了取消,sitemap 就一直不存在。
Next.js 的 sitemap.ts 寫法是 export default 一個函式,回傳由 url、lastModified 等欄位組成的陣列,輸出在 /sitemap.xml。文章來自 CMS 或資料庫時,在函式裡把文章清單轉成這個陣列即可。要注意這個檔案預設會被快取,若沒有設定重新驗證,新文章可能要等下次部署才會出現在 sitemap 裡。
四個常見欄位,Google 只看兩個
| 欄位 | 用途 | Google 怎麼處理 |
|---|---|---|
| loc | 頁面網址 | 必填,要用完整的絕對網址 |
| lastmod | 最後修改時間 | 會採用,前提是日期準確 |
| changefreq | 預估更新頻率 | 忽略 |
| priority | 頁面相對重要性 | 忽略 |
← 左右滑動看完整表格 →
不少教學仍建議細調 priority 和 changefreq,但 Google 官方明說兩者完全不使用。真正值得花心思的是 lastmod:Google 會用它安排已知網址的重新檢索,但只有正文、結構化資料、連結這類重大修改才該更新日期;如果網站長期把 lastmod 填成不實的時間,Google 會不再信任這個值。
第二步:上線前檢查 5 件事
依照 Google 的 sitemap 建立規範,提交前逐項確認:
- 網址用完整格式:寫 https://example.com/post,不要寫 /post 這種相對路徑。
- 檔案編碼是 UTF-8:網址含中文或 & 這類特殊字元時,要經過跳脫處理。
- 單檔不超過 50MB 或 5 萬個網址:超過就拆成多份,再用 sitemap index 統整。一般新站碰不到這個上限。
- 放在根目錄:放在子目錄的 sitemap,只對該目錄底下的網址有效(透過 Search Console 提交的除外)。
- 只放想被收錄的網址:sitemap 是一份「請收錄這些頁面」的清單,帶 noindex、被 robots.txt 封鎖,或 canonical 指向別頁的網址,放進去只會讓訊號互相矛盾。
最後用瀏覽器無痕視窗直接打開 sitemap 網址,確認看到的是 XML 內容,而不是 404、登入頁或空白頁。Search Console 的官方流程也建議,先用網址檢查工具對 sitemap 網址做即時測試,確認網頁擷取成功再提交。
第三步:sitemap.xml 提交到 Google Search Console
前提是網站已經在 Search Console 完成驗證,還沒設定可以先看 SEO 實戰篇【零】。另外,透過報告提交需要該資源的擁有者權限。
- 進入 Search Console,選擇要提交的網站資源。
- 左側選單「索引」底下,點「Sitemap」。
- 在「新增 Sitemap」欄位填入 sitemap 網址,例如 sitemap.xml 或 wp-sitemap.xml。
- 按「提交」,等待狀態更新。
沒有擁有者權限,或希望其他搜尋引擎也找得到,可以在 robots.txt 任一位置加一行 Sitemap: https://example.com/sitemap.xml,同一個檔案可以列多行。這是 Google 認可的另一種提交方式。
網路上較舊的教學還會教「用 ping 網址通知 Google」,這個端點 Google 在 2023 年 6 月宣布停用,6 個月後失效。現在的正規管道是 Search Console(含 API)與 robots.txt。
提交後怎麼看結果
Google 收到後會立即擷取 sitemap,但清單上的網址要檢索還需要時間。Sitemap 報告的狀態有三種:
| 狀態 | 意思 | 該做什麼 |
|---|---|---|
| 成功 | 已擷取並處理,網址都排入檢索 | 等待即可,不用重複提交 |
| 有錯誤 | 擷取到了但有部分錯誤,解析成功的網址仍會排入 | 點進該列看錯誤明細並修正 |
| 無法擷取 | Google 拿不到檔案 | 檢查網址、HTTP 狀態碼、robots.txt 是否封鎖 |
← 左右滑動看完整表格 →
報告上的「已發現的網頁」只是從 sitemap 解析出的網址數,不等於收錄數。想知道 sitemap 裡有幾頁真的被收錄,要到「網頁索引」報告,用 sitemap 篩選。
狀態成功,頁面還是沒收錄?
sitemap 狀態是「成功」、頁面卻遲遲沒出現,代表問題已經不在「Google 找不到」,而是在檢索或索引階段:可能是 noindex、canonical 指向別頁、內容被判定價值不足,或單純還在排隊。官方說明檢索可能需要幾天到幾週。逐項排查可以看網站沒被 Google 收錄的 6 個檢查步驟。
常見問題
每發一篇新文章,都要重新提交 sitemap 嗎?
不用。成功讀取過的 sitemap,Google 會自行定期重新檢索,只要 sitemap 本身會隨文章自動更新即可。官方建議重新提交的時機,是 sitemap 內容大幅變動,或修正了無法擷取的問題之後。
提交 sitemap 和「要求建立索引」差在哪?
網址檢查工具的「要求建立索引」適合少數幾個網址,而且有配額限制,同一網址重複要求也不會比較快;網址數量多時,官方建議用 sitemap。兩者不衝突:sitemap 負責全站,特別重要的單篇可以再手動要求一次。
參考資料
- Build and Submit a Sitemap(Google Search Central)
- Learn about sitemaps(Google Search Central)
- Sitemaps report(Search Console Help)
- Sitemaps ping endpoint is going away(Google Search Central Blog)
- Ask Google to recrawl your URLs(Google Search Central)
- sitemap.xml(Next.js Docs)
- New XML Sitemaps Functionality in WordPress 5.5(Make WordPress Core)
