針對特定 HTTP 狀態碼建立自訂錯誤頁面 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

針對特定 HTTP 狀態碼建立自訂錯誤頁面

若您想要顯示自訂錯誤訊息而非預設訊息,比方與您的網站其餘部分使用相同格式設定的頁面,則可以讓 CloudFront 向檢視器傳回包含自訂錯誤訊息的物件 (如 HTML 檔案)。

若要指定您想要傳回的檔案,以及指明檔案應該傳回的錯誤,您可以更新 CloudFront 分發以指定這些值。如需詳細資訊,請參閱 設定錯誤回應行為

例如,以下是自訂錯誤頁面:

custom AWS 404 頁面範例的螢幕擷取畫面。

您可以為每個支援的 HTTP 狀態碼指定不同的物件,或您可以為所有支援的狀態碼使用相同的物件。您可以選擇為某些狀態碼指定自訂錯誤頁面,而不是為其他狀態碼指定。

由於各種原因,透過 CloudFront 提供的物件無法使用。這些分為兩大類:

  • 用戶端錯誤顯示請求有問題。例如,有指定名稱的物件不可用,或使用者沒有在 Amazon S3 儲存貯體中取得物件所需的許可。當用戶端發生錯誤,原始伺服器會在 4xx 範圍中傳回 HTTP 狀態碼給 CloudFront。

  • 伺服器錯誤顯示原始伺服器有問題。例如,HTTP 伺服器是忙碌或不可用。當伺服器發生錯誤,您的原始伺服器會在 5xx 範圍中傳回 HTTP 狀態碼至 CloudFront,或特定期間內 CloudFront 不從您的原始伺服器取得回應並假設一個 504 狀態碼 (閘道逾時)。

針對 HTTP 狀態碼,CloudFront 可以傳回自訂錯誤頁面,其中包含下列項目:

  • 400, 403, 404, 405, 414, 416

  • 500、501、502、503、504

    備註
    • 如果 CloudFront 偵測到請求可能不安全,CloudFront 會傳回 400 (無效的請求) 錯誤,而不是自訂錯誤頁面。

    • 您可以建立自訂錯誤頁面以取得 HTTP 狀態碼 416 (不滿足請求範圍),當原始伺服器傳回狀態碼 416 給 CloudFront 時,您可以變更 CloudFront 傳回給檢視器的 HTTP 狀態碼 如需詳細資訊,請參閱CloudFront 傳回的變更回應代碼。然而,CloudFront 不會快取狀態碼 416 回應,因此,即使您為狀態碼 416 指定 Error Caching Minimum TTL (快取最小 TTL 時發生錯誤) 的值,CloudFront 也不會使用它。

    • 在某些情況下,CloudFront 不會傳回 HTTP 503 狀態碼的自訂錯誤頁面,即使您將 CloudFront 設定為此。如果 CloudFront 錯誤碼為 Capacity ExceededLimit Exceeded,則 CloudFront 會將 503 狀態碼傳回給檢視器,而不使用您的自訂錯誤頁面。

    • 如果您建立了自訂錯誤頁面,CloudFront 將傳回 Connection: closeConnection: keep-alive,以取得下列回應代碼:

      • CloudFront Connection: close會傳回狀態碼:400、405、414、416、500、501

      • CloudFront Connection: keep-alive會傳回狀態碼:403、404、502、503、504

如需 CloudFront 如何從原始伺服器處理錯誤回應的詳細說明,請參閱 CloudFront 如何處理來自原始伺服器的 HTTP 4xx 和 5xx 狀態碼