« MovableType6.3を常時SSL化(さくらインターネットの無料SSLサーバ証明書「Let's Encrypt」) | メイン | Google Maps APIの設定とGoogle Cloud Platfromでの管理 »

TOP> Webをカスタマイズ

さくらインターネットでルートに常時SSL化、それに伴うhttpsリダイレクトは、複数ドメインを運用しているしている場合は要注意

常時SSL化が加速している。
レンタルサーバー各社が無料SSLサーバ証明書を提供しているので、導入しやすくなっていることも理由のひとつだ。
さくらインターネットでも無料サーバ証明書「Let's Encrypt」が提供された。

ただ、サーバ環境によっては、いろいろな問題があることも理解しながら、常時SSL化への設定を行うことも必要だ。

さて、ここでは、さくらインターネットについてのルートドメインでのSSL設定時の注意点を記す。

さくらインターネットの常時SSL化に伴うリダイレクト(http → https)へのリダイレクト設定、.htaccessへの表記が一般的なものとは違う。
しかし、さくらインターネット仕様の情報はいろいろな記事で紹介されており、変更すれば問題なくリダイレクト設定は完了する。

もう一つの問題は、以下の環境で運用している場合に遭遇する。

条件1.
ルート(www)にドメイン設定しているサイトを常時SSL化しリダイレクト処理の設定がある。
ex. ディレクトリ:/www/ ドメイン:https://roto-domein.com

条件2.
ルート以下のディレクトリに、別のドメインを割り当て、サイト運営している。
・このドメインは、SSL化はまだしていない、httpドメイン
ex. ディレクトリ:/www/sub01/ ドメイン:http://sub01-domein.jp

この環境条件の場合、ルートに設置されたhttpsへのリダイレクト設定が、下層の別のドメインにも反映される。
具体的には、
http://sub01-domein.jp → https://roto-domain.com/sub01/

下層ディレクトリに設定されたドメインは無視されて、ルートに設定されたドメインに強制的に書き変わり、そこからのパスのURLとなる。

ルートドメインからのパスに変換されたサイトの表示は、テキストデータはそのまま反映されるが、絶対パスで設定してあるcssや画像などは反映されず、デザイン表記が崩れた状態となる。

ドメイン(http://rainier.taskmother.jp/ → がhttps://www.taskmother.jp/○○○/)無視されて、レイアウトが崩れた状態↓

root-ssl01.jpg

割り当てた正しいドメインURLで表示されていたときのレイアウト↓

root-ssl02.jpg

実際、物理的には、roto-domain.com/sub01/でアクセスすることは可能なので、このサーバの仕様上、当たり前と言えばそうなのである。

そして同様に、ルートに設定された.htaccessが、wwwより下層にも反映される。

例外条件:
ルート以下のディレクトリに、別のドメインを割り当て、常時SSL化したサイト運営をしている。
そして、httpsリダイレクト設定済みの場合である。

ex. ディレクトリ:/www/sub01/ ドメイン:https://sub01-domein.jp

この場合は、ドメイン設定されたディレクトリ(フォルダ)のhtaccessが優先されるためである。

さて、例外条件を除く、この環境での回避対応策。

いちばん、簡単な方法は、
1.ルートドメインの常時SSL化の前に、下層のドメインの常時SSL化、httpsへのリダイレクト設定を行う。
 例外条件と同様になるように、httpsリダイレクト設定まで行う。


2.下層に設定したドメインのディレクトリ(フォルダ)に、リダイレクト無効処理を書いた.htaccessを設置する。
ex. /www/sub01/ http://sub01-domein.jp 
 /www/sub01/ の場所に、

-------------
RewriteEngine Off
-------------

を表記し、.htaccessを設置する。

ただし、すでに.htaccessが存在し、別のリダイレクト処理を行っている場合は使えない。


3.ルートのhttpsリダイレクト設定に条件を加える。
例外処理として、指定したディレクトリはhttpsにリダイレクトしない記述を書く。

RewriteCond %{REQUEST_URI} !(^/除外ディレクトリ名/)

ex. ディレクトリ:/www/sub01/ ドメイン:http://sub01-domein.jp 

この場合は、

-------------
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !(^/sub01/)
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteRule ^(.*)$ https://www.taskmother.jp/$1 [R=301,L]
</IfModule>
-------------

しかし、これを表記して試してみたが、当方の環境では上手く行かなかった。
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
の下に変更したが上手く行かず。
その際、いろいろ変更しまくったので、キャッシュなどが残っていて、実は有効になっていたかもしれないが、この方法より、とりあえず2の方法で対応できたので、深く追求せず。

今後は、無料SSLサーバ証明書が提供されたので、順次、他の下層ドメインを常時SSL化して、またルートのhttpsリダイレクトを復活させる予定である。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

トラックバック

このエントリーのトラックバックURL:
https://www.taskmother.jp/cgi-bin/taskmt/mt-tb.cgi/427

タスクマザーブログ
Powered by FeedBurner

RSS2.0

最近のコメント

タスクマザー(taskmother)
  中野 治美

〒921-8806
  石川県野々市市北西部土地区画整理事業
     施工地区55街区3番202