為特定HTTP狀態碼創建自定義錯誤頁面 - Amazon CloudFront

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

為特定HTTP狀態碼創建自定義錯誤頁面

如果您想要顯示自訂錯誤訊息而不是預設訊息 (例如,使用與網站其他部分相同格式的頁面),您可以將包含您自訂錯誤訊息的物件 (例如HTML檔案) CloudFront 傳回給檢視者。

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

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

自定義 AWS 404 頁面示例的屏幕截圖。

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

您通過提供的對象 CloudFront 可能由於各種原因而無法使用。這些分為兩大類:

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

  • 伺服器錯誤顯示原始伺服器有問題。例如,HTTP伺服器忙碌中或無法使用。發生伺服器錯誤時,您的原始伺服器會傳回 5xx 範圍內的HTTP狀態碼 CloudFront,或在一段時間內 CloudFront 未收到來源伺服器的回應,並假設 504 狀態碼 (閘道逾時)。

CloudFront 可以傳回自訂錯誤頁面的HTTP狀態碼包括下列項目:

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

  • 500、501、502、503、504

    備註
    • 如果 CloudFront 偵測到要求可能不安全,則會 CloudFront 傳回 400 (錯誤要求) 錯誤,而非自訂錯誤頁面。

    • 您可以為HTTP狀態碼 416 (要求的範圍不符合) 建立自訂錯誤頁面,也可以變更原始碼 CloudFront 傳回HTTP狀態碼 416 至時傳回給檢視者的狀態碼。 CloudFront如需詳細資訊,請參閱變更傳回的回應碼 CloudFront。不過,CloudFront 不會快取狀態碼 416 回應,因此即使您指定狀態碼 416 的錯誤快TTL取最小值,也 CloudFront 不會使用它。

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

    • 如果您創建了一個自定義錯誤頁面, CloudFront 將返回Connection: closeConnection: keep-alive以下響應代碼:

      • CloudFront 返回Connection: close狀態碼:400,405,414,416,500,501

      • CloudFront 返回Connection: keep-alive狀態碼:

有關如何 CloudFront 處理來源錯誤響應的詳細說明,請參閱如何從您的來源 CloudFront 處理 HTTP 4xx 和 5xx 狀態碼