Lightsail「wwwなし」を「wwwあり」にリダイレクトする


サイトの設定をしていて上の画面が表示されて困ったので、どのように対応したかを書き残しておきます


この記事が、どこかのだれかのためになれば幸いです。

目的

サイトの評価を損なわないために、ブラウザからアクセスされた際に、「https://www.my-trendblog.com」にリダイレクトさせたい

入力されるURL備考
https://www.my-trendblog.comnon redirectだから問題なし
https://my-trendblog.com
http://www.my-trendblog.comブラウザによっては✕
http://my-trendblog.comブラウザによっては✕

この問題は結構ハマりまして、お名前.comの「URL転送Plus」に申し込もうかと何度か考えました
>「URL転送Plus」1ドメインあたり100円/月(税抜)
本ページの情報は2020年1月23日時点のものです。
最新の情報は お名前.com サイトにてご確認ください

試行錯誤

下のような設定を試しましたが、期待通りの動きはせず
※ http から https へのリダイレクト設定は済んでいる前提です

/opt/bitnami/apache2/conf/bitnami/bitnami.conf

<VirtualHost _default_:80>
  DocumentRoot "/opt/bitnami/apache2/htdocs"

  # non-www to www redirect
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
  RewriteCond %{REQUEST_URI} !^/\.well-known
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=permanent,L]

〜〜〜〜

<VirtualHost _default_:443>
  DocumentRoot "/opt/bitnami/apache2/htdocs"

  # non-www to www redirect
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
  RewriteCond %{REQUEST_URI} !^/\.well-known
  RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=permanent,L]

〜〜〜〜


sudo /opt/bitnami/ctlscript.sh restart apache

入力ミスがないかを探したり、別のやり方を試したりしながら悩んで、気づきました。


「これ・・・リダイレクトの問題じゃない!」


環境は人それぞれなので、一概には言えませんが私の場合、以下の原因です。

用意していたSSLは「www.my-trendblog.com」のシングル

これは、wwwのサブドメインのみ有効で、wwwなしのドメインでは利用できない


https://my-trendblog.comでアクセスした場合、apacheでのリダイレクトは順番として証明書が利用できないmy-trendblog.comでの表示が先に行われ、その後でapacheでリダイレクトしようとする。


ブラウザのwarning画面にある「詳細」→「my-trendblog.com にアクセスする(安全ではありません)」を選ぶとbitnami.confの設定変更だけでちゃんとリダイレクトされることが確認できました。

対策

やるべきことは「https://my-trendblog.com」のページでブラウザのwarningを出さないようにすることでした

方法として、
メインドメインの証明書を用意してブラウザのwarning出さずに表示
それからwwwありにリダイレクトする


お金と手間がかかりそうな気がして、もう今のまま放置しようかと思いましたが、喉に魚の骨が刺さったような気持ちは嫌なので対応しました。

【要注意】
ネームサーバーの変更は名前解決に時間がかかるので、運営中のサイトは厳しいかもしれません。このときは世の中に反映されるまで半日以上はかかっていました。


(1) お名前.com
  ― お名前.comで管理しているメインドメインをRoute 53で変更できるようにネームサーバーを変更
    お名前.comではメインドメインのAレコードにCloudFront ディストリビューションドメイン名を設定できないため Route 53にしています。

(2) Route 53
  ― メインドメインのホストゾーンの追加
  ― お名前.comで管理していたDNSレコードもRoute 53に移動

(3) S3
  ― リダイレクト用のバケット作成
  ― プロパティ → Static website hosting
  ― リクエストをリダイレクトする 設定

(4) AWS Certificate Manager
  ― メインドメイン用のSSL証明書のリクエスト

(5) CloudFront
  ― S3 の「ウェブサイト用エンドポイント」にhttpsでアクセスできるDistribution (Web) を作成

期待通りのリダイレクトの動きを確認できました。

ただ、Route 53、 S3、CloudFrontなどの費用も増えるので、お名前.comの「URL転送Plus」のオプションとどっちがよかったかはまだわかりません

1年ほど様子を見て、どっちがよいか決めたいと思います。

返信する