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]