網頁怎麼被 Google 收錄?索引控制的完整地圖
網頁沒被收錄,標題 寫得再好、結構化資料 標得再完整都沒有意義。這一組是整個系列的地基:先確認網頁真的進得了搜尋引擎的資料庫。
四道關卡
從一個網址存在,到它出現在搜尋結果,中間要依序通過四道關卡。任何一道沒過,後面就不會發生。
| 關卡 | 在做什麼 | 沒過的原因 |
|---|---|---|
| 1. 被發現 | 搜尋引擎知道這個網址存在 | 沒有任何連結指向它,也沒放進 sitemap |
| 2. 被抓取 | 下載這一頁的 HTML | 被 robots.txt 擋住、伺服器回傳錯誤狀態碼 |
| 3. 被渲染 | 執行 JavaScript,取得最終畫面 | 純用戶端渲染而程式碼執行失敗 |
| 4. 被索引 | 判斷內容值得收錄,存進資料庫 | 標了 noindex、內容重複、品質不足 |
排查問題時 一定要照這個順序。很多人一發現沒被收錄就去改標題與描述,那是第四關之後的事;真正的問題往往卡在第二關。
各工具負責哪一段
索引控制沒有一個總開關,而是散落在六個地方,各管一段。
| 工具 | 管哪一關 | 做什麼 |
|---|---|---|
sitemap.xml | 1 | 主動告知有哪些網址,加速被發現 |
robots.txt | 2 | 允許或禁止爬蟲下載某些路徑 |
| HTTP 狀態碼 | 2 | 回傳 200 才會被抓取,404 與 410 會被移除 |
| 渲染方式 | 3 | 決定爬蟲看到的是內容還是空容器 |
canonical | 4 | 多個相似網址中指定哪一個才是正式版本 |
noindex | 4 | 明確拒絕被索引 |
最容易搞錯的一組:robots.txt 與 noindex
封鎖不等於不收錄
robots.txt 的 Disallow 是叫爬蟲 不要下載 這一頁,不是叫它 不要收錄。如果別的網站連到這個網址,搜尋引擎仍可能把網址列進搜尋結果,只是因為讀不到內容而顯示空白摘要。
更麻煩的是:noindex 寫在頁面的 <head> 裡,爬蟲必須 下載這一頁才讀得到。所以同時用 Disallow 封鎖又寫 noindex,等於讓爬蟲永遠讀不到那個 noindex。
正確的搭配方式:
| 目的 | 該用什麼 |
|---|---|
| 完全不想被收錄(後台、感謝頁) | 允許爬取,並在頁面標 noindex |
| 不想浪費爬取預算(大量參數網址) | 用 robots.txt 的 Disallow |
| 已經被收錄、現在想移除 | 先標 noindex,等它消失後再考慮封鎖 |
| 測試機整站不外流 | robots.txt 全站 Disallow 加上 noindex 標頭 |
排查沒被收錄的順序
按這個順序一項一項確認,通常前三步就找到原因:
- 直接開網址:自己都打不開就別怪搜尋引擎。確認回傳 200,內容正常。
- 檢視原始碼:用瀏覽器的「檢視網頁原始碼」(不是開發者工具的 Elements),確認主要內容真的在 HTML 裡,而不是 空的容器 。
- 看
robots.txt:確認這個路徑沒有被Disallow。 - 搜尋
noindex:在原始碼裡搜尋這個字串,也要檢查 HTTP 回應標頭裡的X-Robots-Tag。 - 檢查
canonical:確認它指向自己,而不是指到別頁。指到別頁等於主動說「別收錄我」。 - 用網址檢查工具:Google Search Console 的網址檢查會直接告訴您它看到的狀態與拒收原因。
這一組還有這些主題
| 主題 | 說明 |
|---|---|
| 爬蟲規則 robots.txt | 語法、比對規則,以及測試機與正式機的環境切換 |
| 網站地圖 sitemap.xml | 欄位定義、數量上限與自動產生的做法 |
| 網址正規化 canonical | 重複內容的六種來源與自我參照的必要性 |
| 轉址與 HTTP 狀態碼 | 301、302、404、410 對索引與權重的影響 |
| SEO 友善的網址結構 | 路徑設計、中文網址與尾斜線的一致性 |
| 多語系標記 hreflang | 繁中、簡中與 x-default 的對應設定 |
| 分頁與無限滾動 | 讓爬蟲讀得完整個列表的實作模式 |
環境切換不要靠人工
測試機被收錄是很常見的意外,而且事後很難清乾淨。正確做法是把 robots.txt 的內容 依環境自動產生,而不是手動維護一份檔案:
// 只有正式機開放檢索,其餘環境一律封鎖
const content = isProduction
? `User-agent: *\nAllow: /\n\nSitemap: ${domain}/sitemap.xml\n`
: `User-agent: *\nDisallow: /\n`;這樣就不會出現「上正式機時忘了改回來」或「部署測試機時把正式站封鎖掉」這兩種災難。
常見問題
被抓取和被索引是同一件事嗎?
不是。被抓取只代表搜尋引擎下載過這一頁的內容,被索引才表示它被存進資料庫、有機會出現在搜尋結果。一個網頁可能被抓取後因為內容重複或品質不足而不被索引。
用 robots.txt 封鎖就等於不會被收錄嗎?
不等於,這是最常見的誤用。封鎖只是叫爬蟲不要下載這一頁,但如果別的頁面連到它,網址本身仍可能被收錄,只是摘要空白。真正要阻止收錄必須用 noindex ,而 noindex 又需要爬蟲讀得到頁面,所以兩者不能同時用在同一個網址上。
提交 sitemap 之後多久會被收錄?
沒有保證時間,從幾小時到數週都有可能。sitemap 是建議而不是命令,搜尋引擎仍會依網站的整體重要性與爬取預算決定順序。要加速單一頁面可以用 網址檢查工具 主動請求索引。
為什麼我的頁面顯示已檢索但未建立索引?
通常有三個原因:內容與站內其他頁面過於相似而被視為 重複內容 、內容量太少不足以構成獨立主題,或整個網站的權重還不足以讓所有頁面都被收錄。優先處理重複內容與內容深度。
什麼是爬取預算,小網站要在意嗎?
爬取預算是搜尋引擎願意花在您網站上的抓取次數。頁面數在數千以內的網站幾乎不必擔心,它主要影響大型電商與內容平台。真正該注意的是不要用大量參數網址與 無限分頁 把預算浪費掉。