サイトのドメイン変更時にAWSを利用
(更新日時 )
このサイトは以前のドメインから突然ドメイン変更してしまいましたが、 旧ドメインからの転送くらいやっておくかと後付けでAWSのサービスを使って 対応した方法のまとめです。
前提
本来であればドメイン変更時にやっておくべき内容ですが、後付けなので特殊な例か もしれません。前提をまとめておきましょう。
- 以下の記述では、旧ドメインを
blog.old.com
、新ドメインをblog.new.com
としています - 旧ドメインは保持しており、DNSの設定などは可能である
- 旧サイトは破壊しており新たにサーバーを立てたりするの面倒なので、AWSのマ ネージドサービスを利用する
- 新ドメインの運用はすでに開始している
Amazon S3の Bucket作成
サーバーを立てるのが面倒なので、S3で旧ドメインから新ドメインへのリダイレクト 設定を行います。
まず、旧ドメイン名blog.old.com
と同じ名前のBucketを作成します。Bucket名は
ドメイン名と完全に一致させる必要があります。
Bucketを作成したら static website hostingを有効にして次の設定を行います。
設定項目 | 設定内容 |
---|---|
Hosting Type | Redirect requests for an object |
Host name | blog.new.com |
Protocol | https |
AWS Private Certifcate Authority(ACM)でSSL証明書取得
SSL証明書をACMで作成します。新ドメインはすでに運用を開始している前提なので、 ここでは割愛します。
ACMで証明書を作成する場合、Regionをus-east-1
にする必要があります。
"Request a public certificate" で新ドメイン名の証明書をrequestします。 DNS検証が要求されるので、ACM 上の"Domains"で表示されているCNAMEレコードの 設定を自身のDNSで行います。
DNSに指定された内容でCNAME レコードを作成してしばらくすると、
StatusがIssued
に変わります。
証明書の有効期間は1年程度になっていると思います。"Renewal eligibility" が
Eligible
になっていればACMが自動的に更新してくれます。
気になる場合はSNSなどを使って通知を飛ばしましょう。
CloudFrontの設定
1. ディストリビューションの作成
CloudFrontでディストリビューションを作成、オリジンを先ほど作成したS3 Bucket
にします。オリジンドメインは、S3 Bucket のURLを指定します。
blog.old.com.s3.amazonaws.com
などになっているはずです。
2. SSL証明書の指定
"Custom SSL Certificate" 先ほどACMで発行したSSL証明書を選択します。
これで HTTPS経由のリクエストに対応できます。
3. Viewr Protocol Policy
Redirect HTTP to HTTPS
を選択し、すべてのHTTPリクエストがHTTPSにリダイレク
トされるように設定します。
(2024-11-25更新)
Redirect HTTP to HTTPS
では、http://blog.old.com
がhttps://blog.old.com
に
転送されるためブラウザ上では転送されますが、後述するGoogle Search Consoleに
よる移行でうまくhttpでの転送がうまく認識されません。
このため、HTTP and HTTPS
を選択します。こうすることでうまく転送できるように
なります。確認方法は次の通りです。エージェントにGooglebot
を指定すること
で、Google Search Consoleでの移管時のチェックでどのように判断されるかわかり
ます。
$ curl -I -A "Googlebot" http://blog.old.com HTTP/1.1 301 Moved Permanently Location: https://new.blog.com/ $ curl -I -A "Googlebot" https://blog.old.com HTTP/1.1 301 Moved Permanently Location: https://new.blog.com/
4. キャッシュのクリア
念のため、CloudFrontのキャッシュをクリアしておきます。
"Create Invalidation" で /*
を指定するとキャッシュがすべてクリアされます。
5. Google Search Console移管(2024-11-25追記)
私の場合、一度旧ドメインでのGoogle Search Consoleを消してしましたが、 新たに旧ドメインでの登録を行ったのちに新ドメインへの移管を行います。
このオペレーションによりGoogle Search Console上で新ドメインのコンテンツが 「重複コンテンツ」でなく移管したものだと識別してもらうようにします。
オペレーションは簡単ですが、次の2点を注意する必要があります。
- ドメイン認証を行う場合、
blog.old.com
でTXT レコードを作る必要があります が、通常CNAMEレコードも作成していると思うので重複してしまいます。この場合、 一度CNAMEレコードを無効にしてTXTレコードを作成して認証後にTXTレコードを削除 しCNAMEレコードを有効にします。 - 上記で
curl
で確認したようにHTTP/HTTPSのレスポンスで301が返って、Location でblog.new.com
が返ってくる必要があります。
まとめ
これで旧ドメイン blog.old.com
にアクセスすると、 blog.new.com
に転送され
るようになります。
本来であれば旧ドメインのサーバーで、.htaccess
などで
新ドメインに301リダイレクトを掛ければ終わります。
301リダイレクトはリクエスターに、サイトが新ドメインに恒久的に移行したことを効果的に 示せるため、検索エンジンも新ドメインを信頼しSEO的にはよいのかもしれません。
ただし、旧ドメインの環境を破壊している場合には転送 のためだけのWebサーバーを新たに用意 する必要があります。
上記のようにAWSのマネージドサービスを利用すれば、 サーバーを立てることなく新ドメインへの転送が可能です。
設定が面倒なことと、CloudFrontを利用しているので料金が発生するというデメリッ トはあります。
しかし、設定は一度だけですし、料金もよほどアクセス数があるサイトでないかぎり 気にするような額ではないと思います。スケーラブルですし、 CloudFrontを利用しているため、リダイレクトがエッジサーバーで行われ、 ユーザーの地理的な位置に近い場所からリダイレクトが提供されるため、パフォーマンスが高いと思います。