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]

Posted by Agopeanuts