用 AWS S3 存放靜態網站時,記得要設定 404 redirect



前言

  • 用 S3 來存放 static site,再套用 CDN 作為存取進入點,就可以讓靜態網頁以極低成本的方式架設,像是本站 Blog。
  • Blog 移轉到 S3 這麼久了,之前一直沒特別注意到要使用 AWS redirect 來處理 404 的問題。



說明

更新方式

進入 S3 bucket 的設定頁面,編輯 Static website hosting

S3 > {你的 bucket name} > Properties 分頁 > 最下面 Static website hosting > 編輯

像這邊:


然後在最下面的 Redirection rules – optional 中新增一個 rule:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[
    {
        "Condition": {
            "HttpErrorCodeReturnedEquals": "404"
        },
        "Redirect": {
            "HostName": "ktlast.com",
            "Protocol": "https",
            "ReplaceKeyWith": "404.html"
        }
    }
]

其中

  • HostName:就填你的網站網址
  • Protocol:使用 https;不是必要的欄位
  • ReplaceKeyWith404.html
    • 如果像我一樣使用 hugo 建立靜態網頁,一般的主題都會寫好 404.html 的頁面,因此直接跳轉過去即可。
    • 如果是用其他方式建立網頁,就要確認 404 頁面的檔案名稱,填入即可。

上面的 JSON 就相當於告訴 AWS:

如果有 404 的錯誤,請跳轉到 https://ktlast.com/404.html


完成更新之後只要直接在網址最後面隨便輸入字串測試,

例如 https://ktlast.com/asdio1h298h9hg1,會跳轉到 404 頁面就表示設定成功了。




REF

  1. https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-page-redirect.html?icmpid=docs_amazons3_console
Licensed under CC BY-NC-SA 4.0
最後更新 2025-05-01 07:02

主題 StackJimmy 設計