LoginSignup
5
8

ドメイン変更後に旧URLへのアクセスをCloudFrontでリダイレクトする

Last updated at Posted at 2023-08-30

概要

example.com ⇒ sample.net にドメインを変更した場合、AWSのCloudFront Functionを使えば簡単にリダイレクトできます。

CloudFrontのディストリビューションを作成します。

オリジンドメイン

どちみち設定したオリジンにはアクセス行かないので、オリジンドメインは何でもOKです。

代替ドメイン

ドメインを設定します。
aws証明書マネージャーページのスクリーンショット

カスタムSSL証明書

ドメインで使用していた証明書を設定します。

そのほかはデフォルトでOKです。

CloudFront Functionを作る

メニューから「関数」を選びます。表示されたページ内の「関数を作成」から関数を作ります。
Image from Gyazo

関数

すべてをリダイレクトするように関数を書きます。
stringifyQueryStringはこちらのページを参考にさせていただきました

var querystring = require('querystring');

function stringifyQueryString(eventQueryString) {
    var query = {};
    Object.entries(eventQueryString).forEach(function(q) {
        query[q[0]] = q[1].multiValue ? q[1].multiValue.map(function(m) {return m.value}) : q[1].value;
    });
    return querystring.stringify(query);
}

function handler(event) {
    var request = event.request;
    var headers = request.headers;

    var response = {
        statusCode: 302,
        statusDescription: 'Found',
        headers:
            { "location": { "value": `https://[新ドメイン]${request.uri}?${stringifyQueryString(request.querystring)}` } }
        }

    return response;
}

※このままだとクエリパラメータが無いときに無駄に「?」が付くので気持ち悪い人はちゃんと作ってください。

発行

発行します。
Image from Gyazo

同じ画面の「関連付けられているディストリビューション」から先ほど作ったディストリビューションを紐づけします。

旧ドメインのCNAMEあるいはAレコードにディストリビューションを設定

旧ドメインのCNAMEやAレコードにディストリビューションのドメインを指定します。
ディストリビューションのドメインとは一覧の「ドメイン名」列にあります。
Image from Gyazo

これでリダイレクトします!

サブドメインの変更として書いてある記事がいくつかありましたが普通にドメイン変更した場合でも同様に行けました。コストも低いし便利です。クエリパラメータを維持してリダイレクトできるのも嬉しいです。
以前はS3を使ったリダイレクトなどありましたが、今はCloudFront Functionを使うほうが早くて安くて楽です。

もっといい案もある気がするのでお勧めリダイレクト設定案教えてください。

5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8