Skip to content

網頁怎麼被 Google 收錄?索引控制的完整地圖

索引控制:robots.txt、sitemap、canonical 與狀態碼

網頁沒被收錄,標題 寫得再好、結構化資料 標得再完整都沒有意義。這一組是整個系列的地基:先確認網頁真的進得了搜尋引擎的資料庫。

四道關卡

從一個網址存在,到它出現在搜尋結果,中間要依序通過四道關卡。任何一道沒過,後面就不會發生。

關卡在做什麼沒過的原因
1. 被發現搜尋引擎知道這個網址存在沒有任何連結指向它,也沒放進 sitemap
2. 被抓取下載這一頁的 HTMLrobots.txt 擋住、伺服器回傳錯誤狀態碼
3. 被渲染執行 JavaScript,取得最終畫面純用戶端渲染而程式碼執行失敗
4. 被索引判斷內容值得收錄,存進資料庫標了 noindex、內容重複、品質不足

排查問題時 一定要照這個順序。很多人一發現沒被收錄就去改標題與描述,那是第四關之後的事;真正的問題往往卡在第二關。

各工具負責哪一段

索引控制沒有一個總開關,而是散落在六個地方,各管一段。

工具管哪一關做什麼
sitemap.xml1主動告知有哪些網址,加速被發現
robots.txt2允許或禁止爬蟲下載某些路徑
HTTP 狀態碼2回傳 200 才會被抓取,404 與 410 會被移除
渲染方式3決定爬蟲看到的是內容還是空容器
canonical4多個相似網址中指定哪一個才是正式版本
noindex4明確拒絕被索引

最容易搞錯的一組:robots.txt 與 noindex

封鎖不等於不收錄

robots.txtDisallow 是叫爬蟲 不要下載 這一頁,不是叫它 不要收錄。如果別的網站連到這個網址,搜尋引擎仍可能把網址列進搜尋結果,只是因為讀不到內容而顯示空白摘要。

更麻煩的是:noindex 寫在頁面的 <head> 裡,爬蟲必須 下載這一頁才讀得到。所以同時用 Disallow 封鎖又寫 noindex,等於讓爬蟲永遠讀不到那個 noindex

正確的搭配方式:

目的該用什麼
完全不想被收錄(後台、感謝頁)允許爬取,並在頁面標 noindex
不想浪費爬取預算(大量參數網址)robots.txtDisallow
已經被收錄、現在想移除先標 noindex,等它消失後再考慮封鎖
測試機整站不外流robots.txt 全站 Disallow 加上 noindex 標頭

排查沒被收錄的順序

按這個順序一項一項確認,通常前三步就找到原因:

  1. 直接開網址:自己都打不開就別怪搜尋引擎。確認回傳 200,內容正常。
  2. 檢視原始碼:用瀏覽器的「檢視網頁原始碼」(不是開發者工具的 Elements),確認主要內容真的在 HTML 裡,而不是 空的容器
  3. robots.txt:確認這個路徑沒有被 Disallow
  4. 搜尋 noindex:在原始碼裡搜尋這個字串,也要檢查 HTTP 回應標頭裡的 X-Robots-Tag
  5. 檢查 canonical:確認它指向自己,而不是指到別頁。指到別頁等於主動說「別收錄我」。
  6. 用網址檢查工具Google Search Console 的網址檢查會直接告訴您它看到的狀態與拒收原因。

這一組還有這些主題

主題說明
爬蟲規則 robots.txt語法、比對規則,以及測試機與正式機的環境切換
網站地圖 sitemap.xml欄位定義、數量上限與自動產生的做法
網址正規化 canonical重複內容的六種來源與自我參照的必要性
轉址與 HTTP 狀態碼301、302、404、410 對索引與權重的影響
SEO 友善的網址結構路徑設計、中文網址與尾斜線的一致性
多語系標記 hreflang繁中、簡中與 x-default 的對應設定
分頁與無限滾動讓爬蟲讀得完整個列表的實作模式

環境切換不要靠人工

測試機被收錄是很常見的意外,而且事後很難清乾淨。正確做法是把 robots.txt 的內容 依環境自動產生,而不是手動維護一份檔案:

js
// 只有正式機開放檢索,其餘環境一律封鎖
const content = isProduction
  ? `User-agent: *\nAllow: /\n\nSitemap: ${domain}/sitemap.xml\n`
  : `User-agent: *\nDisallow: /\n`;

這樣就不會出現「上正式機時忘了改回來」或「部署測試機時把正式站封鎖掉」這兩種災難。

常見問題

被抓取和被索引是同一件事嗎?

不是。被抓取只代表搜尋引擎下載過這一頁的內容,被索引才表示它被存進資料庫、有機會出現在搜尋結果。一個網頁可能被抓取後因為內容重複或品質不足而不被索引。

用 robots.txt 封鎖就等於不會被收錄嗎?

不等於,這是最常見的誤用。封鎖只是叫爬蟲不要下載這一頁,但如果別的頁面連到它,網址本身仍可能被收錄,只是摘要空白。真正要阻止收錄必須用 noindex ,而 noindex 又需要爬蟲讀得到頁面,所以兩者不能同時用在同一個網址上。

提交 sitemap 之後多久會被收錄?

沒有保證時間,從幾小時到數週都有可能。sitemap 是建議而不是命令,搜尋引擎仍會依網站的整體重要性與爬取預算決定順序。要加速單一頁面可以用 網址檢查工具 主動請求索引。

為什麼我的頁面顯示已檢索但未建立索引?

通常有三個原因:內容與站內其他頁面過於相似而被視為 重複內容 、內容量太少不足以構成獨立主題,或整個網站的權重還不足以讓所有頁面都被收錄。優先處理重複內容與內容深度。

什麼是爬取預算,小網站要在意嗎?

爬取預算是搜尋引擎願意花在您網站上的抓取次數。頁面數在數千以內的網站幾乎不必擔心,它主要影響大型電商與內容平台。真正該注意的是不要用大量參數網址與 無限分頁 把預算浪費掉。

延伸閱讀

參考資料:Google 搜尋中心:Google 搜尋的運作方式