Liquidweb Cloud Sites で HTTPS リダイレクトさせる htaccess の書き方
Liquidweb Cloud Sites というホスティングサービスで、WordPress サイトを作って、常時 SSL 化したいのだけれど、
HTTP から HTPPS へのリダイレクトが無限ループになりハマった。調べたことと、解決方法をメモ。
<調べてわかったこと>
- 裏側にロードバランサーか何かがいるようで、通常使う
%{HTTPS}とかの変数では判断できなかった。 httpからhttpsにリダイレクトさせても%{HTTPS}はoffのまま。%{SERVER_PORT}も80のまま(443に変わらない)。%{HTTP:X-Forwarded-Proto} =http(%{HTTP:X-Forwarded-Proto} !=https)も使えない。- さくらのレンタルサーバーだと、リバースプロキシを経由していて
%{HTTP:X-Sakura-Forwarded-For} ^$でhttpなのかhttpsなのか判断できる。
%{HTTPS} ではなく、 %{ENV:HTTPS} を使うと、うまくいった。
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on [NC]
RewriteRule ^(.*)$ https://domain.com/$1 [R=301,L]
* 今回は www ありでアクセスが来ても、www なしに統一した。
www ありに統一する場合は、
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]
* www あり・なしどちらでもアクセス可なら、
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]