サイトのドメイン変更時にAWSを利用

(更新日時 )

カテゴリー:  Tech タグ:  aws blog cloud domain

cloud

このサイトは以前のドメインから突然ドメイン変更してしまいましたが、 旧ドメインからの転送くらいやっておくかと後付けで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.comhttps://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を利用しているため、リダイレクトがエッジサーバーで行われ、 ユーザーの地理的な位置に近い場所からリダイレクトが提供されるため、パフォーマンスが高いと思います。

コメント

Comments powered by Disqus