プログラミング

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

常時SSLをhtaccessで実現しようと思った時

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
こんな感じで書くと思います。
そして大体これで上手く行きます。

しかし、サーバーによってはこれのせいでリダイレクトループにハマるのです。
そういったサーバーでは
RewriteCond %{HTTPS} off
この記述が使えないのです。

この場合、
RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
という書き方が正解なんだそうです。

色々なサーバーで対応出来るよう、知見を深めておきましょうね。