CDP:Permanent Redirectパターン
提供:AWS-CloudDesignPattern
目次 |
解決したい課題
- サブドメイン(例: http://new-app.example.com) を残したいが、アクセスが減りつつあるサーバを保守したくない。
- 上記サブドメインを別ドメインのサブディレクトリ (例: http://www.example.com/old-app/) に転送する為に、ウェブサーバを立ち上げる為のVirtual Hostの設定や、転送用サーバの保守もしたくない。
- また移転の度にサブドメインの確認をせねばならず運用の負荷がかかる
クラウドでの解決/パターンの説明
サブドメインを別ドメインの別ディレクトリに転送する場合は該当ドメインのDNSとS3のウェブサイトホスティング機能を使えば可能になる。
実装
例えばhttp://new-app.example.com を http://www.example.com/old-app に転送する場合
- S3のバケット名としてnew-app.example.comを作成する
- バケットの設定タブにて権限設定で誰でもアクセス可能にする
- その後Websiteタブをクリックし有効にする
Enabled: クリック
Index Document: index.html
Error Document: index.html
Endpoint: <=自動で生成されるのでコピーする
- バケットの中に以下のようなindex.htmlを置く
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>Redirect to http://www.example.com/old-app</title>
<script type="text/javascript" language="javascript">
<!--
location.href='http://www.example.com/old-app';
// -->
</script>
</head>
<body>
See you Later!
</body>
</html>
- 該当ドメインのDNSでnew-app.example.comのCNAMEを先ほどコピーしたS3バケットのEndpointにする
利点
過去のウェブサイトが運用されていたサブドメインを捨てる事無く新しいドメインへ遷移する事で、ブックマークをしてくれたユーザーや、検索などで来たユーザーからの機会損失を最小限にする事が可能になる
注意点
HTTPのステイタスコード3xxが出る訳ではないので、検索エンジンなどのIndex更新はされない。