技術文章 · 數位行銷

robots.txt 與 sitemap:讓爬蟲正確收錄你的網站

robots.txt 告訴搜尋引擎哪裡可以爬、哪裡別碰;sitemap 則像一份目錄,幫它有效率地找到你所有頁面。兩者只要設錯一行,可能讓網站收錄不全,甚至整個從搜尋結果消失。

作者 Steve Chen · 發布  · 更新  · 約 8 分鐘閱讀

數位行銷 — 廷皓技術專欄插圖

robots.txt 告訴搜尋引擎哪裡可以爬、哪裡別碰;sitemap 則像一份目錄,幫它有效率地找到你所有頁面。兩者只要設錯一行,可能讓網站收錄不全,甚至整個從搜尋結果消失。

先分清楚一件事:爬取不等於索引

要把這兩份文件用對,得先建立一個很多人搞混的觀念:爬取跟索引是兩回事。爬取,是搜尋引擎派機器人(也就是爬蟲)沿著連結把你的頁面『讀』進去;索引,則是它讀完之後,決定要不要把這一頁收進資料庫、將來出現在搜尋結果裡。這兩步是分開的,而且——這點最關鍵——控制爬取的工具,不一定能控制索引。robots.txt 管的是前者,能不能碰;真正決定收不收的,是 noindex 這類指令。把這條界線搞混,就是絕大多數收錄問題的根源,後面講的坑幾乎都是從這裡長出來的。

robots.txt:一份「哪裡能爬」的門禁表

robots.txt 是放在網站根目錄的純文字檔,網址後面加 /robots.txt 誰都看得到。它遵循的是 1994 年就存在、2022 年 9 月才由 IETF 正式收編成 RFC 9309 標準的『機器人排除協定』。運作邏輯很單純:用 User-agent 指定對象、用 Allow 與 Disallow 標明哪些路徑能爬、哪些別碰,通常最後再加一行 Sitemap: 指向你的網站地圖。這裡有個工程上的細節值得記住:標準規定爬蟲至少要能解析 500 KiB的 robots.txt,Google 也是抓這個上限,超過的部分直接無視。對絕大多數中小企業網站來說,一輩子碰不到這個天花板;但如果你是規則寫到上千行的大型電商,就得留意別讓檔案膨脹,把重要規則擠到 500 KiB 之外,那等於白寫一場。

它擋的是「爬」,不是「收」

這裡有個坑,踩過的人特別多:robots.txt 的 Disallow 擋的是爬取,擋不住索引。也就是說,一個被 robots 擋掉的頁面,只要別的網站有連結指過來,它的網址照樣可能出現在搜尋結果裡——只是因為爬蟲進不去、讀不到內容,那筆結果會光禿禿的,沒有標題摘要,在 Search Console 裡會被標成『已建立索引,但被 robots.txt 封鎖』。更麻煩的是反過來的情況:你想把某頁徹底趕出搜尋結果,於是同時用 robots.txt 擋它、又在頁面裡放 noindex——結果爬蟲根本進不去,永遠讀不到那行 noindex,反而讓它擋不掉。正確做法剛好相反:真正不想被收錄的頁,別用 robots.txt 擋,而是放行讓爬蟲進來、讓它親眼看見 noindex,它才會乖乖把頁面移出索引。記住這個順序,你就避開了 SEO 裡最反直覺的一個陷阱。想確認某一頁到底卡在哪一關,最快的方法是用 Search Console 的網址檢查工具,它會直接告訴你這頁是被爬取封鎖、還是被 noindex 排除,你不必自己瞎猜,也省得改半天改錯地方。

別順手把 CSS、JS 也擋掉

另一個常見誤區,是為了『乾淨』把 /css/、/js/、/assets/ 這類資料夾整包 Disallow 掉。問題是,現在的搜尋引擎早就不是只讀原始碼,它會像瀏覽器一樣把整個頁面『渲染』出來再判斷——版面長怎樣、內容有沒有被彈窗蓋住、在手機上排版正不正常,全靠這些樣式與腳本檔。你把它們擋了,等於讓爬蟲戴著墨鏡看你的網站,它可能因此誤判你的版面與使用體驗,連帶拖累排名。除非有很明確的理由,凡是渲染需要用到的資源檔,一律放行。

sitemap:給爬蟲一份「請優先看這些」的清單

如果說 robots.txt 是門禁表,那 sitemap(網站地圖,通常叫 sitemap.xml)就是你主動遞給爬蟲的一份導覽清單。它把你希望被收錄的重要頁面列成一張表,附上每頁的最後更新時間,讓搜尋引擎不必漫無目的地沿著連結亂逛,就能有效率地找到頁面、也知道哪些頁改過、該回來重看。依 sitemaps.org 協定,單一 sitemap 檔的上限是 50,000 個網址、且未壓縮不超過 50MB,超過就得拆成好幾份,再用一份『索引檔』把它們串起來——而一份索引檔本身又能容納最多 50,000 個 sitemap,理論容量高達二十幾億個網址。尤其當你的站經常改版、常常新增或下架頁面,一份跟得上實際狀況的 sitemap,就是搜尋引擎最信得過的第一手情報;反過來說,新站因為外部連結還少、爬蟲不容易『自己走』到你的頁面,這份主動遞出去的清單,往往就是它願意先看你一眼的關鍵。

priority、changefreq 早就沒人理,lastmod 才是重點

很多舊教學會叫你替每頁填 priority(重要度)跟 changefreq(更新頻率),實務上,Google 這兩個欄位早就直接忽略,填了也是白填。真正還有份量的,是 lastmod(最後修改時間),它會影響搜尋引擎多久回來重爬你一次。但這裡有個前提:lastmod 必須誠實。Google 只有在確認你的 lastmod 跟頁面的實際改動對得上時,才會採信它;要是你的 CMS 每天把全站每一頁的 lastmod 都自動蓋成『今天』,它一眼就看穿,乾脆連你整站的 lastmod 都一律不信。所以與其造假求快,不如老老實實讓它反映真正的內容更新,這個訊號才留得住。

只放你真心想被收錄的頁

sitemap 不是頁面塞越多越好,而是要乾淨。放進去的每一個網址,最好都同時符合三個條件:是這頁的正規版本(canonical)、會回傳 200 正常狀態碼、而且是你真的想被收錄的頁。把已經刪掉的、會轉址的、被 noindex 的、或內容重複的網址硬塞進 sitemap,等於遞給爬蟲一份錯誤地圖,反而一點一滴消耗它對你網站的信任。另外,檔案本身要用 UTF-8 編碼,而且務必放在根目錄——只有放在根目錄的 sitemap,才有資格影響整站範圍的頁面。

爬取預算:多數人不必焦慮,大站才要精算

談到 sitemap 跟收錄,總會有人問到『爬取預算(crawl budget)』。意思是搜尋引擎願意、而且有能力爬你網站的那個 URL 額度,大致等於『爬取速率上限』與『爬取需求』兩者取小的那一個。速率上限,是它在不拖垮你伺服器、不影響真實使用者的前提下,能用多快的速度來爬——你的主機回應越快、越穩,它就敢爬得越勤。爬取需求,則看你頁面的人氣(有沒有外部連結、有沒有實際流量)跟新鮮度(常更新的頁會被更頻繁地回訪)。兩個條件夾出來的那條線,就是你的額度。

但要講一句最實在的話:如果你的網站只有幾百、頂多幾千頁,爬取預算根本不用你操心,搜尋引擎的資源絕對夠把你逛完。它真正會變成問題,是在超過一萬頁以上的大型電商、目錄站,或那種架構會生出成千上萬組篩選、分頁網址的網站。值得一提的是,2026 年初 Google 把單頁 HTML 的抓取上限從 15MB 一口氣下修到 2MB,並點明主機的反應速度,往往比網站規模更能決定爬取效率——換句話說,與其擔心額度夠不夠,不如先把伺服器調快、把沒價值的頁面收乾淨,這才是真正能撬動收錄的槓桿。

說清楚的工程判斷準則

  • 上線第一件事就是檢查 robots.txt:打開 /robots.txt,確定沒有殘留的 Disallow: /,或不小心擋到重要目錄。這一步花不到一分鐘,卻能擋掉最致命的意外。
  • 該藏的頁用 noindex,不是 robots.txt:後台、購物車、測試頁、感謝頁這類不該出現在搜尋結果的頁面,要放行讓爬蟲進來、掛上 noindex,才擋得乾淨。
  • 渲染資源一律放行:CSS、JS、圖片這些影響版面判斷的檔案別擋,讓爬蟲看到跟使用者一樣的畫面。
  • sitemap 保持乾淨又即時:新頁自動納入、過期頁即時移除,裡面只留正規、回 200、你真心想被收錄的網址。
  • lastmod 誠實填:讓它反映真實改動,別讓 CMS 全站蓋成同一天,否則整個訊號會被打折。
  • 到 Search Console 提交並盯著看:提交 sitemap,定期檢查收錄狀態與錯誤報告,問題才不會拖到你發現流量掉了才驚覺(可以搭配我們那篇 GSC 入門一起看)。

基礎打對,流量才進得來

查核資料

  1. Learn about sitemaps Google Search Central · 2026-08-12

聯絡廷皓討論 看更多文章