常時SSLをhtaccessで書いたらリダイレクトループ

標題の通りです。
一般的に常時SSLをhtaccessで実現しようと思った時

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

こんな感じで書くと思います。
そして大体これで上手く行きます。

しかし、サーバーによってはこれのせいでリダイレクトループにハマるのです。
その代表格がGMO iCLUSTA+であります。
なんと、このサーバーは
RewriteCond %{HTTPS} off
この記述が使えないのです。


上記のやり方でhtaccessをアップすると、こうなります。
なにそれいみわかんない。

実にハマりました。まさかこのサーバーにこんな罠があるとは思いもせず。
正解は公式サポートに書いてありました。
https://helpcenter.gmocloud.com/iclusta/s/article/ch-1417#https-on

RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

という書き方が正解なんだそうです。
これで困っている方が他にもきっといると思ったので投稿させて頂きました。
是非お役立て下さい。。。

Web

Posted by demoya