網站技術教學專區
網域、主機、網站設計與 SEO 架構解析
robots.txt 與 sitemap.xml 是什麼?收錄的兩個關鍵檔案
網站被 Google 收錄這件事,說穿了只有兩個前提:Google 進得來,而且知道你有哪些頁面。前者由 robots.txt 決定,後者靠 sitemap.xml。這兩個檔案都不大,多數人也從來沒打開看過,但只要其中一個設錯,整個網站可以在搜尋結果裡消失。
麻煩的是,網路上很多教學把這兩件事混在一起講,甚至把它們的功能講反。我們遇過的實際案例裡,最貴的一種是:老闆想擋掉某個目錄不讓 Google 收,結果整站被擋了三個月才發現。這篇說明兩個檔案各自在做什麼、怎麼看自己的設定對不對,以及最常見的那幾個誤解。
兩個檔案,兩件完全不同的事
先把角色分清楚,後面就不容易搞混。
| robots.txt | sitemap.xml | |
|---|---|---|
| 回答的問題 | 你可以去哪些地方? | 我這裡有哪些頁面? |
| 語氣 | 限制 | 邀請 |
| 格式 | 純文字 | XML |
| 位置 | 只能放在網站根目錄 | 通常在根目錄,但可以指定 |
| 沒有會怎樣 | 視同全部開放,通常沒問題 | Google 只能靠連結慢慢找 |
| 設錯的後果 | 整站消失 | 新頁面收得慢 |
最後一列是重點:這兩個檔案的風險完全不對等。sitemap.xml 設錯頂多是收錄變慢,robots.txt 設錯可以讓整個網站從搜尋結果蒸發。所以動 robots.txt 之前一定要想清楚。
robots.txt:告訴爬蟲哪裡不要去
它是一個放在網站根目錄的純文字檔,網址固定是 你的網域/robots.txt。任何人都能直接在瀏覽器打開來看,包括你的競爭對手——所以不要把不想讓人知道的路徑寫進去。

四個指令就夠用了
語法很簡單,實務上會用到的就這幾個:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://你的網域/sitemap_index.xml
User-agent
指定這段規則是給誰看的。* 代表所有爬蟲。要單獨對 Google 設規則就寫 Googlebot,但除非有特殊需求,用 * 就好。
Disallow
禁止檢索的路徑。空白代表不禁止任何東西;寫 / 代表禁止整個網站——這一個字元就是最常見的災難。
Allow
在已被禁止的範圍裡開一個例外。上面那個 admin-ajax.php 就是典型用法,因為很多外掛靠它運作,整個後台目錄擋掉會讓頁面顯示不完整。
Sitemap
告訴爬蟲你的網站地圖在哪。這一行建議一定要加,成本是零,好處是任何搜尋引擎第一次來都能馬上找到清單。
WordPress 有一個「看不見」的 robots.txt
這一點很多人不知道:即使你的主機空間裡根本沒有這個檔案,開 你的網域/robots.txt 還是會看到內容。那是 WordPress 動態產生的虛擬檔案。
影響有兩個。第一,你用檔案管理工具找不到它是正常的,不是壞掉。第二,只要你在根目錄放上真正的實體檔案,虛擬版本就會被完全取代。所以要自訂內容,直接建立一個實體檔案上傳到根目錄即可,方法可以參考FTP 上傳網站教學,或用cPanel 的檔案管理員直接新增。多數 SEO 外掛也提供編輯介面,那是最省事的做法。
三個最常見的誤解
一、Disallow 不等於不會被收錄
這是整篇最重要的一段。Disallow 阻止的是檢索,不是索引。Google 不會去讀那個頁面的內容,但如果別的地方有連結指過去,它仍然可能把那個網址放進搜尋結果,只是標題和描述都是空的,或顯示一段「無法提供說明」。
更糟的是,因為 Google 被擋在門外,它讀不到你頁面上的 noindex 標記。所以「用 robots.txt 擋住,再加 noindex 保險」這個做法是錯的,兩個指令會互相抵銷,結果反而是頁面留在索引裡拿不掉。
正確的做法是分開用:不想被收錄的頁面,用 noindex,並且讓 Google 進得去讀到那個標記;Disallow 只用在真的不需要被檢索的路徑,例如後台、購物車、搜尋結果頁這種對外沒有價值的動態網址。如果你的頁面現在完全找不到,為什麼你的網站 Google 搜尋不到那篇列了完整的排查順序,這是其中一種可能。
二、擋掉 CSS 和 JS 會讓 Google 看到破掉的網站
早期有一種說法是把佈景主題和外掛目錄擋掉可以節省檢索資源。這在現在是有害的,因為 Google 會實際渲染你的頁面來判斷版面和使用體驗。樣式表和腳本被擋住,它看到的就是一個沒有排版的網站,這會直接影響行動裝置的評估與Core Web Vitals 的判讀。
所以不要擋 wp-content 或 wp-includes。想確認 Google 實際看到什麼,用網址審查工具的「測試線上版本」看它的渲染截圖,這在Google Search Console 新手教學裡有說明。
三、robots.txt 不是安全機制
它是一份請求,不是一道鎖。守規矩的搜尋引擎會遵守,惡意爬蟲不但不理會,還會把它當成藏寶圖——你在裡面寫了哪些路徑不要看,等於直接告訴對方哪裡值得看。
真的要保護的內容,該用密碼保護或伺服器層級的存取限制,不是寫在一個公開的文字檔裡。這部分的完整做法可以看網站被駭怎麼辦。
sitemap.xml:把清單交到 Google 手上
網站地圖是一份 XML 格式的網址清單,列出你希望被收錄的頁面,通常還附上最後修改時間。它的作用是讓 Google 不必完全依靠連結一層一層摸索。
對小網站來說,即使沒有網站地圖,只要內部連結做得好,Google 一樣找得到所有頁面。但它在兩種情況下差別很大:頁面數量多的時候,以及新頁面剛發佈的時候——後者是你每次發文都會遇到的。
WordPress 不用自己寫
只要裝了 SEO 外掛(Yoast、Rank Math、SEOPress 都可以),網站地圖會自動產生並隨著發文更新,不需要手動維護。檔名則各家不同,常見的有這幾種:
你的網域/sitemap_index.xml——Yoast、Rank Math 用這個你的網域/sitemaps.xml——SEOPress 用這個你的網域/sitemap.xml——部分外掛用這個你的網域/wp-sitemap.xml——WordPress 內建的版本
逐一試過,能打開的那個就是你的。如果全都打不開,代表 SEO 外掛的網站地圖功能被關掉了,到外掛設定裡開啟即可。外掛怎麼選可以參考WordPress 外掛怎麼選。
另一個更快的方法是直接打開自己的 robots.txt,最後那行 Sitemap: 寫的就是實際位置。
什麼該放、什麼不該放
原則只有一句:網站地圖裡應該只有你希望出現在搜尋結果裡的頁面。
這聽起來理所當然,但實際上外掛的預設值常常會塞進一堆不該有的東西。以下這幾類建議排除:
- 已設為 noindex 的頁面:你一邊告訴 Google 這頁不要收,一邊又把它列在清單上請它來看,訊號互相矛盾。
- 轉址頁:換過網址的舊頁面不該留在清單裡,該留的是新網址。這部分在301 轉址完整指南裡有完整說明。
- 附件頁:WordPress 會為每張圖片產生一個獨立頁面,內容只有一張圖,幾乎不可能被收錄。
- 作者頁與日期封存頁:單人經營的網站尤其沒有必要。
標籤與分類封存頁比較微妙,下一節單獨談。
提交到 Search Console
產生了不代表 Google 知道。到 Search Console 左側選單的「Sitemap」,把網址貼上送出,之後看兩個欄位就好:狀態要顯示成功,已發現的網頁數要和你實際的頁面數量接近。

這裡有個常見的誤操作要避免:這個欄位只能填網站地圖的網址,不能填文章網址。把單篇文章的網址提交進來,Google 會因為讀不到 XML 而回報錯誤,探索到的網頁數會是 0。要讓某一篇文章加速收錄,該用的是網址審查工具,不是這裡。
如果發現的數量明顯偏低,代表清單本身漏東西,回外掛設定檢查有哪些內容類型被排除了。提交一次就夠,之後外掛自動更新、Google 自動回來讀,只有在大改版或換網域時才需要重新送出。網站剛完成的話,這是網站上線前必做的檢查清單裡的其中一項。
標籤頁該怎麼處理?
這是最常被問到的實務問題,而且答案跟直覺相反。
WordPress 會為每個標籤和分類自動產生一個封存頁,內容是該標籤底下的文章列表。問題在於這些頁面沒有原創內容,數量卻可能比你的文章還多——我們看過只有二十幾篇文章、卻有三十幾個標籤頁被收錄的網站。這些列表頁會跟你真正的文章競爭曝光,也稀釋整站的內容品質評價。
直覺的做法是在 robots.txt 加一行 Disallow: /tag/。但如同前面說的,這只會讓 Google 進不去、讀不到 noindex,已經被收錄的那些反而拿不掉。
正確做法是在 SEO 外掛裡把標籤封存頁設為 noindex,讓 Google 進得去、讀到標記、然後主動移出索引。整個過程通常要幾週,不會立刻反映在報表上。
分類頁則建議保留。它是網站的主要導覽路徑之一,如果你有在分類頁寫一段說明文字,它本身就有內容價值。這牽涉到整體的網站架構優化,值得一併規劃。
四步驟自我檢查
不需要任何工具,五分鐘就能做完。
第一步:打開 robots.txt
在瀏覽器輸入 你的網域/robots.txt。看到內容代表存在;看到 404 代表沒有,那通常也沒關係。重點是確認裡面沒有單獨一行 Disallow: /,那代表整站被擋。
第二步:打開網站地圖
用上面那幾個檔名逐一試,或直接看 robots.txt 最後一行寫的位置。打得開就對了,畫面會是一份表格或一串網址清單,樣式醜是正常的,那是給機器看的。
第三步:確認兩者沒有打架
最經典的錯誤組合是:網站地圖裡列著某個目錄的頁面,robots.txt 卻把那個目錄擋掉了。等於你交了一份清單,同時把門鎖上。Search Console 會直接報錯,說「已提交的網址遭到 robots.txt 封鎖」。
第四步:用網址審查工具實測
隨便挑一篇文章,貼進 Search Console 最上方的搜尋框,展開「網頁索引狀態」。重點看兩列:是否允許檢索和是否允許編入索引,兩個都要是「是」。如果顯示被 robots.txt 封鎖,那就是設定有問題。這一步最直接,因為它是 Google 當場去試的結果,不是你自己的推測。

順帶一提,這個畫面的「發現方式」還會告訴你 Google 是從哪裡找到這一頁的——是從網站地圖,還是從某一篇文章的連結。這是驗證內部連結有沒有生效最直接的方式。
剛上線的網站要特別注意一件事
開發階段為了避免半成品被收錄,很多人會勾選 WordPress 後台「設定 → 閱讀」裡的「阻擋搜尋引擎索引這個網站」。這個選項會直接改寫你的虛擬 robots.txt,讓整站被擋。
問題是網站正式上線時,這個勾常常沒有人記得取消。我們遇過網站上線半年、老闆一直以為 SEO 沒效果,實際上是這個勾從來沒拿掉。從測試環境搬到正式主機的完整流程,可以看寫好的網站怎麼上線。
檢查方法就是上面的第一步:打開 你的網域/robots.txt,看到 Disallow: / 就是它。
結語
這兩個檔案的性質差很多。sitemap.xml 是加分項,做好了讓收錄更快、更完整,沒做也不會出大事,而且交給 SEO 外掛就能自動處理。robots.txt 則是風險項,平常不需要動它,一旦動錯代價很高。
所以務實的建議是:網站地圖交給外掛,設定好之後提交一次就別再管;robots.txt 保持簡單,擋掉後台就好,其餘一律開放。不想被收錄的頁面,一律用 noindex 處理,而不是把 Google 擋在門外。
如果你檢查完發現有頁面被擋、或是收錄狀況跟預期差很多,那通常牽涉到主機設定、外掛衝突或站台結構,不是改一行文字就能解決的。SEO 服務會從這類技術面的檢查開始,先確認 Google 進得來、看得懂,再談後面的排名。