HTTP 狀態碼、網路錯誤和 DNS 錯誤對 Google 搜尋有何影響

本頁說明各種 HTTP 狀態碼、網路錯誤和 DNS 錯誤對於 Google 搜尋有何影響,內容涵蓋 Googlebot 在網路上最常遇到的 20 種狀態碼,以及最為常見的網路錯誤和 DNS 錯誤。較為罕見的狀態碼 (例如 418 (I'm a teapot)) 則不在本篇文章介紹範圍中。本頁提及的所有問題在 Search Console 的網頁索引報表中都會產生相對應的錯誤或警告。

HTTP 狀態碼

當代管網站的伺服器回應用戶端 (例如瀏覽器或檢索器) 發出的要求時,就會產生 HTTP 狀態碼。每個 HTTP 狀態碼各有不同意義,但經常代表相同的結果。舉例來說,有多種狀態碼會發出重新導向訊號,但其結果都相同。

Search Console 會針對 4xx–5xx 範圍中的狀態碼和失敗的重新導向 (3xx) 產生錯誤訊息。如果伺服器以 2xx 狀態碼回應,系統可能會將收到的回應內容納入索引。

下表列出 Googlebot 最常遇到的 HTTP 狀態碼,並說明 Google 如何處理每個狀態碼。

HTTP 狀態碼

2xx (success)

Google 會先查看網頁內容,再決定是否建立索引。如果內容疑似有誤 (例如空白網頁或錯誤訊息),Search Console 就會顯示 soft 404 錯誤

200 (success)

Google 會將內容傳送至索引管道。索引系統可能會對內容建立索引,但不保證一定如此。

201 (created)
202 (accepted)

Googlebot 在檢索內容時會等候一小段時間,然後將收到的任何內容傳送至索引管道。逾時時間視使用者代理程式而定,例如 Googlebot Smartphone 和 Googlebot Image 的逾時時間可能有所差異。

204 (no content)

Googlebot 會向索引管道發出信號,說明檢索器未收到任何內容。Search Console 可能會在網站的網頁索引報表中顯示 soft 404 錯誤。

3xx (redirection)

Googlebot 最多採用 10 個重新導向躍點。如果檢索器未在 10 個躍點內收到內容,Search Console 就會在網站的網頁索引報表中顯示重新導向錯誤。Googlebot 採用的躍點數量視使用者代理程式而定,例如 Googlebot Smartphone 和 Googlebot Image 的值可能有所差異。

在使用 robots.txt 的情況下,Googlebot 會依據 RFC 1945 的定義追蹤至少五個重新導向躍點,之後便會停止並判定 robots.txt 檔案發生 404 錯誤。

Googlebot 從重新導向網址中收到的所有內容都會遭到忽略,而最終目標網址的內容則有可能納入索引。

301 (moved permanently)

Googlebot 會遵循重新導向,而且索引管道會將重新導向當做表示重新導向目標應為標準網址的「強烈」信號。

302 (found)

Googlebot 會遵循重新導向,而且索引管道會將重新導向當做表示重新導向目標應為標準網址的「微弱」信號。

303 (see other)
304 (not modified)

Googlebot 會向索引管道發出信號,說明當前內容與上次檢索的內容相同。索引管道可能會重新計算網址的信號,但狀態碼並不會對索引作業造成任何影響。

307 (temporary redirect) 等同於 302
308 (moved permanently) 等同於 301

4xx (client errors)

Google 的索引管道不會對傳回 4xx 狀態碼的網址建立索引,並且會將已建立索引並傳回 4xx 狀態碼的網址從索引中移除。

系統會忽略 Googlebot 從傳回 4xx 狀態碼的網址收到的所有內容。

400 (bad request)

除了 429 以外,其餘 4xx 錯誤都會以同樣的方式處理:Googlebot 會向索引管道發出信號,說明網頁內容不存在。

索引管道會將先前已建立索引的網址從索引中移除,同時也不會處理新檢索的 404 網頁。檢索頻率會逐漸降低。

401 (unauthorized)
403 (forbidden)
404 (not found)
410 (gone)
411 (length required)
429 (too many requests)

Googlebot 會將 429 狀態碼視為伺服器超載的訊號,並判定為伺服器錯誤。

5xx (server errors)

5xx429 伺服器錯誤會促使 Google 檢索器暫時降低檢索頻率。系統會將已建立索引的網址保留在索引中,但最終會予以移除。

如果 robots.txt 檔案超過 30 天才傳回伺服器錯誤狀態碼,Google 會使用 robots.txt 的最後一個快取副本。如果找不到快取資料,Google 則會假設沒有任何檢索限制。

系統會忽略 Googlebot 從傳回 5xx 狀態碼的網址收到的所有內容。

500 (internal server error)

Googlebot 會降低網站檢索頻率。檢索頻率降低時,即表示傳回伺服器錯誤的個別網址數量增加。Google 的索引管道會將持續傳回伺服器錯誤的網址從索引中移除。

502 (bad gateway)
503 (service unavailable)

soft 404 項錯誤

soft 404 錯誤是指您的網址所傳回的頁面告知使用者該網頁不存在,但同時又傳回 200 (success) (成功) 狀態碼。在某些情況下,傳回的頁面可能沒有主要內容或空白網頁。

網站的網路伺服器、內容管理系統或使用者的瀏覽器會因為許多原因產生這類網頁。例如:

  • 缺少伺服器端 (Server-Side Include) 檔案。
  • 與資料庫的連線中斷。
  • 內部搜尋結果網頁空白。
  • JavaScript 檔案未載入或遺失。

傳回 200 (success) 狀態碼不但會導致使用者體驗不佳,還會在網頁中顯示或建議錯誤訊息或某種錯誤。使用者可能認為網頁是實際上線的網頁,但其實卻是錯誤的網頁。這類網頁已從 Google 搜尋中排除。

如果 Google 的演算法在偵測網頁內容時,發現該網頁實際上是錯誤網頁,Search Console 便會在網站的網頁索引報表中顯示轉址式 soft 404 錯誤。

修正 soft 404 錯誤

下列幾種方法都能解決 soft 404 錯誤,要採用哪種方法視網頁的狀態和您想要的結果而定:

請試著判斷哪一種解決方案最適合您的使用者。

網頁和內容已不存在

如果您已移除網頁,且網站上沒有內容類似的替代網頁,請傳回 404 (not found) (找不到) 或 410 (gone) (不存在) 等回應代碼 (狀態碼)。這些狀態碼會告訴搜尋引擎該網頁不存在,且不要為該內容建立索引。

如果您能夠存取伺服器的設定檔,可以透過自訂錯誤網頁,提供對使用者有所助益的資訊。良好的自訂 404 網頁可協助使用者找到所需的資訊,同時提供其他實用內容,鼓勵使用者進一步瀏覽網站的其他部分。以下提供幾項提示,說明如何設計實用的自訂 404 網頁:

  • 明確告訴訪客,系統找不到他們所需的網頁。請使用友善且具吸引力的語句。
  • 確認 404 網頁與您網站的其餘部分使用相同的風格和外觀 (包括導覽方式)。
  • 考慮加入連結,指向網站上最熱門的幾篇文章以及首頁。
  • 考慮為使用者提供回報無效連結的方法。

自訂 404 網頁是專為使用者建立的網頁。由於搜尋引擎對這些網頁來說並無用處,因此伺服器必須傳回 404 HTTP 狀態碼,以避免為網頁建立索引。

網頁或內容現已移至其他位置

如果網頁已移到他處,或者有明確的替代網頁,請傳回 301 (permanent redirect) (永久重新導向) 狀態碼,將使用者重新導向。這個方法能夠保持使用者擁有完整的瀏覽體驗,也很適合告訴搜尋引擎網頁的新位置在哪裡。請使用網址檢查工具驗證網址是否確實傳回正確代碼。

網頁和內容仍然存在

如果系統將某個狀態正常的網頁標示為 soft 404 錯誤,可能是因為 Googlebot 無法正確載入該網頁、缺少重要資源,或者轉譯期間顯示醒目的錯誤訊息。請使用網址檢查工具檢查轉譯內容和傳回的 HTTP 代碼。如果轉譯出來的網頁為空白、幾乎空白或內容顯示錯誤訊息,可能是因為網頁參照的多數資源 (例如圖片、指令碼和其他非文字元素) 無法載入,可以解讀為 soft 404。 至於資源無法載入的原因,則可能是因為資源遭到封鎖 (例如遭 robots.txt 封鎖)、同一網頁上含有過多資源、發生各種伺服器錯誤、載入速度緩慢或資源太大。

網路錯誤和 DNS 錯誤

網路錯誤和 DNS 錯誤會對網址在 Google 搜尋中的排名產生負面影響,而且非常快速。Googlebot 處理 5xx 伺服器錯誤的方式,與網路逾時、連線重設和 DNS 錯誤的處理方式相似。在發生網路錯誤的情況下,檢索器會立即降低檢索頻率,因為網路錯誤即代表伺服器可能無法處理運作中的負載量。由於 Googlebot 無法連線至代管網站的伺服器,因此 Google 也未收到伺服器中的任何內容。缺少內容表示 Google 無法為已檢索的網址建立索引,而且無法存取的已檢索網址,在幾天內就會從 Google 索引中移除。Search Console 可能會針對各項錯誤產生對應的錯誤訊息。

排除網路錯誤

無論是在 Google 開始檢索網址前,或是 Google 正在檢索網址的當下,這類錯誤都會發生。如果網路錯誤發生在伺服器回應之前,系統便無法提供對應的狀態碼,因此要診斷這些錯誤可能並不容易。如要排除逾時和連線重設錯誤,請執行下列操作:

  • 查看防火牆的設定和記錄,可能有某個封鎖規則組合的適用範圍過於廣泛。請確認 Googlebot IP 位址並未遭到任何防火牆規則封鎖。
  • 查看網路流量。使用 tcpdumpWireshark 等工具擷取並分析 TCP 封包,並找出指向特定網路元件或伺服器模組的異常狀況。
  • 如果找不到任何可疑項目,請與您的代管公司聯絡

任何處理網路流量的伺服器元件中都有可能出現這類錯誤。舉例來說,超載的網路介面可能會拒絕導致逾時 (無法建立連線) 和連線重設 (因誤關通訊埠而傳送了 RST 封包) 的封包。

DNS 錯誤偵錯

DNS 錯誤最常見的原因是設定錯誤,不過也可能是因為防火牆規則封鎖了 Googlebot DNS 查詢所造成。如要偵錯 DNS 錯誤,請執行下列操作:

  • 檢查防火牆規則。請確認 Google 使用的任何 IP 皆未遭到任何防火牆規則封鎖,且系統允許 UDPTCP 要求。
  • 查看您的 DNS 記錄。再次確認您的 ACNAME 記錄是否分別指向正確的 IP 位址和主機名稱,例如:
    dig +nocmd example.com a +noall +answer
    dig +nocmd www.example.com cname +noall +answer
  • 確認所有名稱伺服器是否都指向正確的網站 IP 位址,例如:
    dig +nocmd example.com ns +noall +answer
    example.com.    86400  IN  NS  a.iana-servers.net.
    example.com.    86400  IN  NS  b.iana-servers.net.
    dig +nocmd @a.iana-servers.net example.com +noall +answer
    example.com.    86400  IN  A  93.184.216.34
    dig +nocmd @b.iana-servers.net example.com +noall +answer
    ...
  • 如果您在過去 72 小時內曾變更 DNS 設定,請等候一段時間,讓相關變更在全球 DNS 網路中全面生效。如要加快更新速度,您可以清除 Google 的公用 DNS 快取
  • 如果您使用自己的 DNS 伺服器,請確保伺服器的運作情況良好,不會發生超載情形。