tapitapi’s blog

1日1杯タピオカ!エンジニア

【AWS S3】リダイレクト設定

S3でリダイレクトの設定をする方法 備忘録

 

下記の設定を完了済みで、S3にデプロイしたファイルにアクセスできる前提で、進めます

docs.aws.amazon.com

 

上記STEP1の

8. (オプション) 高度なリダイレクトツールを指定する場合は、[Edit redirection rules] ボックスに、ルールを記述するための XML を入力します。

の部分のルール記述方法を詳しくみていきます

 

リファレンスは下記

docs.aws.amazon.com

 

 

*RoutingRulesタグで囲む

RoutingRulesタグ内に、RoutingRuleタグをルールの数だけ記載する

<RoutingRules>
<RoutingRule>
#ここにルールの一つ目を記載
</RoutingRule>

<RoutingRule>
#ここにルールの二つ目を記載
</RoutingRule>
</RoutingRules>

 

*RoutingRule内にリダイレクトする条件がある場合はCondition タグを使用

 

/imagesフォルダ内で404エラーが出た場合は、/404/404_images.htmlにリダイレクトする例

<RoutingRules>
<RoutingRule>

<Condition>

<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals >
<KeyPrefixEquals>images/</KeyPrefixEquals>
</Condition>

 

<Redirect>

<ReplaceKeyWith>404/404_images.html</ReplaceKeyWith>
</Redirect>

</RoutingRule>
</RoutingRules> 

 

 

*リダイレクトの設定はRedirectタグ内に記載

古いディレクトリ内(oldfolder/*)にアクセス(例えばhttp://olddomain.com/oldfolder/page1.htmlにアクセス)された場合に、

 

https//newdomain.com/newfolder/page1.htmlにリダイレクト(コード301)する例

<RoutingRules>
<RoutingRule>

<Condition>
<KeyPrefixEquals>oldfolder/</KeyPrefixEquals>
</Condition>

 

<Redirect>

<Protocol>https</Protocol>

<HostName>newdomain.com</HostName>

<ReplaceKeyPrefixWith>newfolder/</ReplaceKeyPrefixWith>

<HttpRedirectCode>301</HttpRedirectCode>

</Redirect>

</RoutingRule>
</RoutingRules> 

 

*注意点

リダイレクトは、httpのエンドポイント(http://BUCKETNAME.s3-website-ap-REGION.amazonaws.com)しか動作しません。httpsだと動作しないので注意

 

以上ですーーー!

 

.htaccessはS3では使えないみたいなので、上記の方法でリダイレクトするしかなさそうです。

記載方法はシンプルなのですが、タイポなどでsyntax errorがあってもチェック機能がない(間違いがあっても保存できてしまう)ので、注意です。

 

今後、保存前にチェックしてくれる機能が実装されて欲しいなー、、、

 

おやすみなさいぃぃぃ