CloudFrontでhttpのページをhttpsにリダイレクトするための設定
https対応した時に、CloudFrontで古いURLを新しいURLにリダイレクトするにはどうすればいいのか調べた。しかしCloudFrontにはそのような機能はなかった。どうやら配信元で設定するようだ。ここではS3での設定方法を紹介する。
説明書
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html
このドキュメントにリダイレクトルールの説明が書いてあった。
blog/
を/
にリダイレクトする
例えばblog/
やentry/
といったサブディレクトリへのアクセスを、/
に301リダイレクトする場合は次のようになる。
<RoutingRules>
<RoutingRule>
<Condition>
<KeyPrefixEquals>blog/</KeyPrefixEquals>
</Condition>
<Redirect>
<Protocol>https</Protocol>
<HostName>blog.satooshi.jp</HostName>
<ReplaceKeyPrefixWith></ReplaceKeyPrefixWith>
<HttpRedirectCode>301</HttpRedirectCode>
</Redirect>
</RoutingRule>
</RoutingRules>
これでhttp://blog.satooshi.jp/blog/year/month/day/title
といったURLへのアクセスがhttps://blog.satooshi.jp/year/month/day/title
に301リダイレクトされるようになった。設定完了後にCloudFrontでのキャッシュをクリアすれば動作するはず。