HSTSでリダイレクトを食らう?ロリポップサーバーhttpサイト移転
ロリポップサーバーへhttpWEBサイトを移転
今回の案件はそれ程数多くはないケースだとは思いますが、ロリポップサーバーへhttpWEBサイトを移転させる際に実際に遭遇した事です。
100%断言はできないのですが、HSTSがサブディレクトリにまで影響して、移転サイトにアクセスしようとしてもTOPディレクトリにあるサイトへとリダイレクトが掛かってしまうのだと、今でも思っています。
これから遭遇するやも知れないあなたのためにその経緯を記載しておきたいと思います。
今回のクライアント案件
・別サーバーに元々長く運営しているWordpressのWEBサイトがあり、そこの管理業者との契約を解除したい。
・自前で契約しているロリポップレンタルサーバー中に別ドメインの新しいデザインWordpressサイトがある。これまた別の業者に構築を依頼して出来上がっている。
クライアントの要望
別サーバーにあるドメイン名で、今ロリポップの中にある新しいデザインのWordpressWEBサイトが映るようにしたい
移転元の状態
SSL化はされていないhttpのWordpressサイトです(以後Aドメインとします)。別管理業者がいるためデータに直接触る事ができません。
そしてAドメインサイトはSSL化されていません。
移転先の状態
ロリポップレンタルサーバー内に独自ドメイン(以後Bドメインとします)が既に1件設定されています。
そこに新デザインのWordpressサイトが構築されています。このBドメインサイトはSSL設定済みです。
公開フォルダ設定なし
Bドメインサイトはディレクトリ(公開フォルダ)が設定されていないため、TOPディレクトリ内が表示対象としてあります。
ですのでTOPディレクトリ内にWordpressの構成ファイルが広がっている状態ですね。
結論としては
つまりロリポップサーバーの方にAドメインを移してきて、Aドメインを表示させたときにBのデザイン・内容のサイトが映れば良いのです。
TOPディレクトリにあるBドメインサイトデータを動かすわけにはいかないので、Aドメイン用の区画を中に作って、その中にBドメインのWordpressデータを複製する形になります。
AとBとで同じサイトになるので、Bサイトはそのあとドメインだけ解除します。
手順工程
Aドメインを現在の管理業者から管理移転します(これはさほど問題なく済みました)。
ロリポップレンタルサーバー内に今回移転予定のAドメインを追加で設定します。
TOPディレクトリ内(Wordpress構成ファイル群と同じ位置)に公開フォルダを別に作り、その中を表示先とします。公開フォルダ内にWordpressのインストールをおこないます。
トップディレクトリと公開フォルダの位置
Wordpressデータの引越し
AドメインのWEBデータを、BドメインのWEBサイトデザイン・データにしたい訳ですから。BドメインのWordpressデータをバックアップ(sqlデータも)する必要があります。
Aドメインサイトの中にBのWordpressデータを入れて構成します。
URLパスをAドメインへ一括変更
その時中身のURL記述を全てAドメインに変更しなければなりません(一括変更ツールなどを使います)。
データUPおよび事前確認
データを全てUPして、事前確認をおこなうためhostsファイルを変更します。
詳しくはhostsファイルの書き換え手順・編集方法方法についてをご覧ください。
トラブル発生
移転予定のAドメインを表示させると、なぜかもともと設定してあるBドメインサイトが映るのです。URL自体がBドメインになってしまいます。きちんとURLはAドメインに全てパス変更しているのにも関わらずです。
厳密にいうとリダイレクトされている感じです。
これでは困るのでロリポップサーバーの担当者に聞いてみるのですが、原因はわからないとの事でした。
しばらく考えましたが仕方がないので、こうではないのかという仮説を立てました。
仮説:HSTSが影響している可能性
前にHSTSのところでも紹介しましたが、HSTSが影響している結果リダイレクトされているのではないかと考えたのです。
http接続をhttps接続へリダイレクト
SSL化されているサイトの場合、ブラウザは基本的にはまずhttpsで読込をしようとする機能があります。
しかし、SSL化する前のhttp通信のWEBサイトURLをお気に入りなどに登録されているユーザーはhttpで接続するため、.htaccessのリダイレクトなどでhttpsの方へ飛ばす設定をすると述べました。
HSTSとは
このHSTSというのは、1回目にhttp通信からhttps通信へリダイレクトされたら、次からそのブラウザでは最初からhttps通信を行う機能の事を指します。
.htaccessのリダイレクトを介さずに直接https接続を試みる事で、http接続時のハッキング防止を防ぐわけですね。
お気に入りに入れていても2回目からはhttp通信をしないでいく訳です。
HSTSのサブドメイン設定
さらにHSTSには詳細設定ができ、その直接httpsの読込を「サブドメインにまで広げるかどうか」を決める事ができるのです。
既にSSL化されているBドメインのWEBサイトがHSTSをどのように設定しているかは確認していませんでした。
プラグインなどでSSL設定がされていればhtaccessなどに記載はないはずですから、それを見つけるのは手間が掛かると思ったためですね。
AドメインサイトはBドメインサイトの入れ子の状態
移転させてきたAドメインサイトは、元々あるBドメインサイト内の「公開フォルダの中」にありますよね。
それはBドメインサイトが、登録時に公開フォルダを作らずにTOPディレクトリにそのまま設定がされているためです。つまり「入れ子」のような状態ですね。
これが上記の「サブドメインの判定」になっているのではないかと仮定したのです。
include SubDomains (省略可能) |
対象のWEBサイトで使用するドメイン配下にある全てのサブドメインにも、このHSTSのルールを同様に適用する設定です。 このパラメータを付加すると、サブドメインがHTTPSに対応していないWEBサイトであった場合にも強制的にSSL化(https:)が強制されますので、場合によってはアクセスできなくなるので注意しましょう。 |
---|
ではどうするか
悩んだのですが、とにかくクライアントにはこう説明しました。
「Bドメイン区画のサブディレクトリ内(公開フォルダ)に、今回移転するAドメインサイトが格納される事になるので、移転直後はこの影響で何日か映らない日が出るかも知れない」と。
AドメインサイトをSSL化をしてしまえばhttp通信でなくなるので、HSTSの影響を受けず(リダイレクトされず)に済むのではないかと思いました。
ですので移転された時点でまずはすぐにAドメインサイトのSSL化を図るしかないと思ったのです。それでも上手くいかなったらそこで対処しようと決断しました。
あわせて読みたい関連記事
思い切って移転を開始
結果SSL化をするとAドメインのWEBサイト(デザイン・データ内容はBドメインサイト)がきちんとhttpsで映るようになりました。正直ほっとしましたね。
今はAドメインサイトとBドメインサイトで全く同じWordpressサイトが映っていますので、あとからBドメインの方を「ドメイン解除」すれば、Aドメインサイトだけになります。
この時ディレクトリ構成はそのまま残しておかないと、Aドメインサイトの区画がありますので注意ですね。
いかがでしたか、わたしは勉強になりました。
HSTSの事を知ってて本当に良かったと思いますし、同時にあたらな勉強にもなりました。
そしてロリポップの様に公開ディレクトリを設ける場合は、ドメイン一つだけであっても必ず公開フォルダを設定するべきですね。
そうすれば今回のケースの際、事前確認の際リダイレクトされなかったはずなのです、あくまで過程であり100%断言はできませんが。
終わりよければすべて良し、後は忘れる
でも良いのです。「終わりよければ全て良し」ですので。
クライアントとの実務を通して学ぶことはたくさんあります。その一つ一つが有益なものになっていきますので、臆せずに前へ進みましょう。
そして本当にそうだったのかはわからないままの事でも、そっとそこに置いて去りましょう。次に逢ったら「また逢えたね」で良いのです。