おひとり

できる限りひとりで楽しむための情報やプログラミング情報など。

AWS S3でHTTPリダイレクトを設定(はてなブログでwwwなしアクセスを実現)

AWSのS3とRoute53を使ってリダイレクト用のサーバを作ります。今回ははてなブログのネイキッドドメインのリダイレクトを実現する例を取り上げます。

背景

このブログにも特にアクセスが多いページでAmazonアソシエイトを配置していましたが、 先日、なんと申請が「却下」に。

コツコツと紹介料を積み上げていたのになぜ?という感じでしたが、その理由は以下の通り。

提供されたURLが無効であったため、ウェブサイト/アプリを検証できませんでした。

なお、文面からAmazonでは以下のURLでアクセスしたことが読み取れました。

つまり、以下に対応する必要があります。

  • サブドメインなし(ネイキッドドメイン)でアクセスできるようにする。
  • httpでのアクセスに対応する。

今回はAWSを使ってリダイレクトし、http://ohitori.funでアクセスできるように設定してみます。
つまり、ohitori.funからwww.ohitori.funへのリダイレクトを実現します。

※httpsでネイキッドドメインにアクセスした場合については今回は設定しません。(httpsの設定にはCloudFrontを利用する必要があります。)

※この記事ではAWSを使って設定します。AWSの利用にはある程度の専門知識が必要で、内容によって料金が発生します。
「はてなブログ」はネイキッドドメインの設定に対応しました。検索の流入などの影響を考慮できる、もしくは旧ドメインをリダイレクトさせることができるなど、他の解決策がある場合は基本的にこちらの利用がオススメです。

blog.hatenablog.com

S3の設定

AWSのマネジメントコンソールにログインし、S3のページにアクセスしましょう。
そして、バケットを作成していきます。

f:id:hitoridehitode:20200822154519p:plain
「バケットを作成する」ボタンをクリック

すると、バケットの情報を編集するダイアログが表示されます。
このとき、「バケット名」には、リダイレクト元のドメインを入力します。

今回の場合、ohitori.funからwww.ohitori.funへリダイレクトさせたいので、「バケット名」にはohitori.funを入力します。

f:id:hitoridehitode:20200822154848p:plain
「バケット名」にはリダイレクト元のドメインを入力

その他の設定は全てデフォルトのままでOKです。

以下のようにバケットが作成されますので、これをクリックしましょう。

f:id:hitoridehitode:20200822155352p:plain
作成されたバケットをクリック

そして、「プロパティ」タブをクリックしましょう。

f:id:hitoridehitode:20200822155441p:plain
「プロパティ」タブをクリック

さらに「Static website hosting」をクリックしましょう。

f:id:hitoridehitode:20200822155519p:plain
Static website hostingをクリック

設定フォームが表示されます。

  • 「リクエストをリダイレクトする」をチェック
  • 「ターゲットバケットまたはドメイン」にリダイレクト先のドメインを入力します。

今回の場合、ohitori.funからwww.ohitori.funへリダイレクトさせたいので、「ターゲットバケットまたはドメイン」にはwww.ohitori.funを入力します。

f:id:hitoridehitode:20200822160137p:plain
リダイレクト先の設定を行う。

では、ここまで完了したのでテストしてみましょう。
「Static website hosting」をクリックした時に表示されたエンドポイント(URL)をクリックします。設定に問題なければ指定したページにリダイレクトします。

f:id:hitoridehitode:20200822160245p:plain
エンドポイントをクリックしてリダイレクトすることをテスト

続いて、DNSの設定をしていきます。

Route53の設定

ohitori.funはAWSのRoute53で管理しています。ここではRoute53での設定例を紹介します。

注意 ここではAレコードにS3バケットを直接指定します。これはAWSのRoute53のみで有効な設定です。その他のDNSサービスを利用している場合は利用できません。

まずは、Route53にアクセスし、今回設定するホストゾーンをクリックします。
そして、「レコードを作成」をクリックしましょう。

f:id:hitoridehitode:20200822161111p:plain
「レコードを作成」をクリック

ルーティングポリシーは「シンプルルーティング」を選択しましょう。。

f:id:hitoridehitode:20200822161249p:plain
「シンプルルーティング」をクリック

さらに、「シンプルなレコードを定義」をクリックします。

f:id:hitoridehitode:20200822161339p:plain
「シンプルなレコードを定義」をクリック

すると設定フォームが表示されるので、以下のように設定します。

  • 「レコード名」にはリダイレクト元のドメインを設定(今回はネイキッドドメインからのリダイレクトなので空欄。)
  • 「値/トラフィックのルーティング先」ではそれぞれ「S3ウェブサイトエンドポイントへのエイリアス」、「アジアパシフィック東京」を選択。そして、作成済みの英ダイレクト用のバケットを選択します。
  • 「レコードタイプ」は「A」を選択

f:id:hitoridehitode:20200822161421p:plain
レコードの情報を設定する

以上でRoute53の設定は完了になります。

実際にリダイレクト元のURLにアクセスして、リダイレクトされることを確認しましょう。
ブラウザに入力してもOKです。wgetを使うともう少し詳細に確認できます。

 > wget http://ohitori.fun
--2020-08-22 16:18:15--  http://ohitori.fun/
ohitori.fun (ohitori.fun) をDNSに問いあわせています... 52.219.1.124
ohitori.fun (ohitori.fun)|52.219.1.124|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: http://www.ohitori.fun/ [続く]
--2020-08-22 16:18:15--  http://www.ohitori.fun/
www.ohitori.fun (www.ohitori.fun) をDNSに問いあわせています... 13.230.115.161, 13.115.18.61
www.ohitori.fun (www.ohitori.fun)|13.230.115.161|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently
場所: https://www.ohitori.fun/ [続く]
--2020-08-22 16:18:15--  https://www.ohitori.fun/
www.ohitori.fun (www.ohitori.fun)|13.230.115.161|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK

問題なくリダイレクトできていますので、完了となります。

HTTPSでもリダイレクトしたい!

続編として、HTTPSでもリダイレクトできるようにする方法を記載しました。
すでにこちらの構成が完了している方はスムーズに構築することができます。

www.ohitori.fun

参考リンク

aws.amazon.com

f:id:hitoridehitode:20200822164044p:plain