BASE(ベイス)のURL(独自ドメイン)を .htaccess にてリダイレクトしてすべて繋げる
その昔、CSSを多用した構造で無かった頃。僕にも独自にサーバーを確保して、FTPから各種ファイルをアップロードして自分のウェブサイトを作っていた時代があった(かれこれ20年ぐらい前だろうか…)。年を追うごとに業界の技術やセキュリティ脅威が増していくので、リスクを考慮してサーバーを直接触るような領域からは縁遠くなっていった。同時にWordpressなどのCMSがどんどん進化していき、最近はノーコードもかなり使える条件になってきたこともあって、ウェブサイトを設ける際にドメインは取得するが、サーバーを自分で管理することはほぼ無い。
やったこと(リダイレクト)
SSLなし → あり
http://www → https://wwwSSLなし/サブドメインなし → あり
http:// → https://wwwSSLあり/サブドメインなし → あり
https:// → https://www
前提条件
オンラインショップにしても日常的なメンテナンス(特にサーバー)を委ねられるASPという条件で利用することが多く、自分にできる領域を絞っていたんだけれど、自分が管理しているウェブサイトを、商品管理やオンラインショップも行いたいという目的から、BASE (ベイス)にてURLを独自ドメインに切り替えて運用している。
対象サイト
https://www.akogabbeh.com
BASEでの独自ドメインの管理はCNAMEレコードを利用できるので、メールサーバーを別に設けることができたり、いざBASEを解約する際もドメインのみを管理できることから、BASEを選んだ経緯があった。
BASE単体でウェブサイトを持って独自ドメインを用いると、SSLあり/サブドメインあり でURLが構成され、httpからhttpsへはBASE側でリダイレクト処理がされるが、サブドメインなし のみが表示されない条件であった。特に気にせず数年放置していたところ、TwitterにURLをシェアした後、その投稿をコピペすると、サブドメイン(www)なしの条件となってURLがコピーされていることに気が付いたので、wwwなし → wwwあり へのリダイレクトを試みることにした。
前述したように、サーバーを用いたリダイレクト(SEO的にはこれが一番推奨されている)はちょっと面倒だと思っていたので、他のサイトではもっぱらHTMLのみでリダイレクトできる http-equiv="refresh" ばかり多用していたり、数年前だったか、Wordpressにて作られていたサイトをリニューアルする際に、Wixに切り替えた際に、一定期間、下部ディレクトリがリンク切れになるのを防ぐために、.htaccess を用いたことがあったぐらいで、久しぶりに .htaccess を用いることになる。(ドキドキするわw)
手順
環境
環境として、ドメインはムームードメインを用いていたので、お手軽なロリポップサーバーを用いることにした(どちらもGMOペパボ株式会社)。ロリポップサーバーはFTPもサーバー側で用意されているので便利♪ ムームードメインとロリポップサーバーとの紐付けもざっくりまとめられるので、管理もシンプルだったりする。
メールサーバーの切り替え
もともと対象のドメインを用いたメールアドレスはムームーメールを利用していたんだけれど、ロリポップサーバーと紐付けるにはムームーメールの解約が必要ということなので、まずはロリポップサーバーの契約後にムームーメールを解約して、ドメインと紐付けてからロリポップにてメールアドレスを再設定した。この作業は10分ぐらいだった。
ロリポップサーバーへの紐付け
BASEで利用するのはwwwありの条件のみであったので、ムームードメインのカスタム設定で、サブドメイン(www)のみCNAMEで紐付けられていた。この作業はBASEを運用する際に設定した当時のままなので、今回新たな作業としては、wwwなしや、メールなどをすべてロリポップに紐付けしておく。(浸透時間が多少あるが小1時間ぐらいで終了かと思う)
そして、ロリポップサーバーに .htaccess のファイルをアップデートして完了ってことなんだけれど、不慣れなこともあるので、ネットを調べているとまさにこれって情報があったので参考にさせていただいた。
そこで、記述した内容がこちら
RewriteEngine on
RewriteCond %{HTTP_HOST} ^akogabbeh\.com
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ http://www.akogabbeh.com/$1 [R=301,L]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
で、これで解決!
ちゃんとリダイレクトされているかなぁ〜っと調べている中で、SSL付きのサブドメインなし https://akogabbeh.com/ の条件が漏れていることに気がついたので、さらにネット内を調べてみると、wwwありに統一する記述があるようだったので参考にさせていただいた。
で、追記した記述はこちら
RewriteCond %{HTTP_HOST} !^www\.(.+)$ [NC]
RewriteCond %{HTTP_HOST} (.+)$ [NC]
RewriteRule ^(.*)$ https://www.%1/$1 [R=301,L]
餅は餅屋に
と、ここまでで一段落したんだけれど、念の為、いつもお世話になっている専門家にご教授いただいておこうと思って連絡してみると… wwwありのhttpsのURLに統一するってことですべて解決するんじゃね。ってことで、これまでの記述を用いずに、いただいた記述に差し替えることになった。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
すごくシンプル♪
結果として、初めから専門家に聞いておくのも良いんだけれど、自分で調べてやるのが面白いのだ♪ あざっす!
補足
今回、そもそも、BASE単体でウェブサイトを持って独自ドメインを用いるという条件で生じるリンク漏れ事故みたいな状態だと思う。サブドメインなしでブランドサイトを設けてから、BASEを用いたオンラインショップをサブドメインに当てておくという条件だと、そんなに気にならないのかも知れないんだけれど、ディレクトリがあるURL(商品個別など)だとサブドメインなしで開くと「NOT FOUND」になるだろうし、将来的にはBASE側でいい感じに処理されるんじゃないかと思っている。
別アカウントで再び実施
たまたま別件で管理されているウェブサイトをBASEに統合したいという話になったので、上記の作業を反映させる機会があった。
手順
ドメインは別業者が管理されていたのでドメイン移管の手続きを行う
ムームードメインにて新しく管理する
リダイレクト用にロリポップサーバーを契約する(エコノミープラン)
.htaccess ファイルをサーバー内に用意しておく
ムームードメインにてネームサーバーを切り替える(ムームーDNS)
ムームーDNSにて「設定1」ではロリポップサーバーにてホームページとメールを利用する
ムームーDNSにて「設定2」ではサブドメイン www を CNAME 設定する(cname.thebase.in)
BASEにて独自ドメインを設定する(念の為、一旦無効にしてから再設定した)
基本的にはこの手順でいいんだろうが、ネームサーバーを切り替えることによる浸透期間のようなものがあって、数時間(安定するのに数日かな?)かかるというのが一般的に言及されている。今回、私の環境で3時間ほどで切り替えが確認できた。
追記
2022/12/2 (さらに別アカウントを実施)
http:// からのリダイレクトに不具合あり、https:// にリダイレクトされる際に、アラートが出たので、ロリポップの独自SSL(無料)の設定をしてみると、スムーズにリダイレクトできた♪
僕のnoteは自分自身の備忘録としての側面が強いですが、もしも誰かの役にたって、そのアクションの一つとしてサポートがあるなら、ただただ感謝です。