靜態(tài)網(wǎng)站是指網(wǎng)站的所有網(wǎng)站資源都由靜態(tài)內(nèi)容構(gòu)成,如HTML、JavaScript、CSS、圖片等文件。您可以通過控制臺對已經(jīng)綁定的自定義域名的S3存儲桶配置靜態(tài)網(wǎng)站托管策略
根據(jù)配置界面進(jìn)行相應(yīng)參數(shù)設(shè)置,其中必填項(xiàng):
1、默認(rèn)首頁:該首頁是您通過自定義域名訪問S3存儲桶時(shí),返回S3存儲桶首頁。如果還開通了子目錄首頁,則子目錄下也應(yīng)該存在該文件,當(dāng)然您可以根據(jù)自己的路徑來自定義該文件的內(nèi)容。
2、默認(rèn)404頁(但開通子項(xiàng)目首頁,且文件404規(guī)則為NoSuchKey時(shí),默認(rèn)404不填)是當(dāng)瀏覽器訪問S3存儲桶中的文件不存在(404)時(shí),返回的錯誤頁面。
S3存儲桶必須為公共空間 ,即該存儲桶必須是公共讀私有寫。另外通過S3默認(rèn)的域名進(jìn)行訪問,會將靜態(tài)網(wǎng)站以文件的形式進(jìn)行下載。只有通過綁定S3存儲桶的自定義域名來進(jìn)行訪問才會在瀏覽器渲染顯示。
詳細(xì)工作機(jī)制,參考舉例說明。
為Bucket開啟靜態(tài)網(wǎng)站托管后,您需要將與默認(rèn)首頁名稱相同的文件(例如index.html)上傳至目標(biāo)Bucket,如果Bucket中包含了目錄結(jié)構(gòu)prefix/,則目錄層級下也必須包含index.html文件。此外,您還需要將與默認(rèn)404頁名稱相同的文件(例如error.html)上傳至目標(biāo)Bucket。Bucket的文件結(jié)構(gòu)如下所示:
Bucket├── index.html
├── error.html
├── s3.png
└── prefix/
└── index.htmlCopyErrorSuccess
如果該Bucket綁定了自定義域名example.com,且配置的靜態(tài)網(wǎng)站默認(rèn)首頁為index.html,默認(rèn)404頁為error.html。則通過自定義域名訪問靜態(tài)網(wǎng)站時(shí),根據(jù)是否開通了子目錄首頁,訪問規(guī)則如下:
1、未開通子目錄首頁:
當(dāng)您訪問https://example.com/和https://example.com/prefix/時(shí),S3會返回https://example.com/index.html。
當(dāng)您訪問https://example.com/s3.png時(shí),正常獲取s3.png文件。
當(dāng)您訪問https://example.com/helloworld時(shí),因helloworld不存在,S3會返回https://example.com/error.html。
2、已開通子目錄首頁
當(dāng)您訪問https://example.com/時(shí),S3會返回https://example.com/index.html。
當(dāng)您訪問https://example.com/prefix/時(shí),S3會返回https://example.com/prefix/index.html。
當(dāng)您訪問https://example.com/s3.png時(shí),正常獲取s3.png文件。
當(dāng)您訪問https://example.com/helloworld時(shí),因helloworld不存在,S3會根據(jù)您設(shè)置的文件404規(guī)則返回對應(yīng)信息:
如果文件404規(guī)則設(shè)置為Redirect(默認(rèn)值),S3會繼續(xù)檢查helloworld/index.html是否存在。
如果文件存在則返回302,并將訪問請求重定向?yàn)閔ttps://example.com/helloworld/index.html。
如果文件不存在則返回404。
如果文件404規(guī)則設(shè)置為NoSuchKey,則直接返回404。
如果文件404規(guī)則設(shè)置為Index,S3會繼續(xù)檢查helloworld/index.html是否存在。
如果文件存在則返回200,并直接返回文件內(nèi)容。
如果文件不存在則返回404。