このブログはS3 + Cloudfrontで公開していますが、存在しないページに接続すると403が表示されるので、エラーページを表示するように設定する。
403より404が適切な気がしますが、接続時にCloudfrontでキャッシュにファイルが存在しないためS3に取りに行くがファイルが存在しないのでアクセスが拒否され403が返っていると思われます。
エラーページを作りS3とCloudfrontでエラーページを設定します。
hexoでerrorページを追加
sourceディレクトリにerror.mdを追加するだけです。
タイトルに設定した文字列が表示されるだけのページです。
$ vi source/error.md |
いたるところにホームに戻るボタンがあるので特に何も書かずシンプルな感じにしておきます。
S3とCloudfrontの設定
S3
S3のBucketの設定で”ウェブサイトのホスティングを有効にする”のエラードキュメントに作成したerror.htmlを設定する。
Cloudfront
CloudfrontのDistributionsのErrorPagesに403に対応する設定を追加する。ユーザからは404で見えてほしいので403エラーが発生したら404を返す設定をして/error.htmlを表示するように設定する。
ErrorCode | TTL | ResponsePagePath | ResponseCode |
---|---|---|---|
403 | 300 | /error.html | 404 |
確認
設定後ブラウザから存在しないページにアクセスすると404で/error.htmlが表示されることが確認できる。