iCLUSTAサーバでのhttpsリダイレクトエラーとその解決法
先日、会社のお客様でiCLUSTAサーバをお使いのお客様がいるのですが、そのお客様の常時SSL対応を行った際に、httpsリダイレクトを.htaccessファイルで設定したところ、下記の記述でリダイレクトループのエラーが発生し、ページが表示されなくなりました。
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTPHOST}%{REQUESTURI} [R=301,L]
この書き方がオーソドックスなパターンだと思うのですが、なぜこの書き方でエラーが出たのか検証し解決しましたので、その方法を紹介します。
今回のエラーが起きた原因
今回の原因は、iCLUSTAのサーバが、上記.htaccessファイル中の、一部記述に非対応だったためでした。
その記述というのが
RewriteCond %{HTTPS} off
で、その記述が入ってしまっていたために、サーバが解釈できず、エラーとなっていたようです。
エラーにならない書き方
では、どの様に記述すれば、問題なくリダイレクト処理が完了するかというと
RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTPHOST}%{REQUESTURI} [R=301,L]
のように書き換えてやればOKです。
問題となっていた2行目の記述が書き換わっていると思います。
まとめ
お客様から依頼されていたSSL化の作業ですが、コンパネから申請をおこない、.htaccessでリダイレクトかければOKだろうと高をくくっていたので、この現象が起きたときは正直焦りました。
早い段階で解決法にたどり着いたので良かったですが、今後はサーバごとにこのようなエラーが起こる可能性があることも念頭に置いて作業を行っていこうと思いました。