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でのキャッシュをクリアすれば動作するはず。