さくらサーバーのhtaccessでhttpsを検知するには


ここで聞くことではないかもしれませんが。

さくらサーバーで独自sslを導入しておりhttps統一かつwwwありで統一したいと思っており、htaccessでリダイレクトを記述しています。

httpからhttpsにリダイレクトする際には

[code]

    RewriteCond %{ENV:HTTPS} !^on$
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://www.sample.com/$1 [R=301,L]
    
[/code]

と、さくらサーバーの仕様上、`RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$`
を使わないと行けないとのことで、これは実現できました。

しかしながら、www付を行うとリダイレクトループになります。

[code]

    https://sample.com
    から
    https://www.sample.com
    
[/code]

にリダイレクトするとダイレクトループになります。

httpからhttpsへのも通常のリダイレクトをやるとループになりますが、`RewriteCond %{HTTP:X-Sakura-Forwarded-
For}` をつけるとループにならず、  
じゃあwww付きの時にもコレを適用すればいいかというと、もとからhttpsアクセスの場合は変数が代わるようでfalseが帰るようです。

さくらサーバーで

[code]

    https://sample.com
    から
    https://www.sample.com
    
[/code]

へのリダイレクトのためのhtaccessの記述がお分かりでしたお教えください。




さくらのレンタルサーバーでSNI SSLを使う場合、  
ドメインの設定を「マルチドメインとして使用する（推奨）」で設定してしまうと、  
httpsでの接続時、「wwwなし」「wwwあり」どちらでアクセスしても  
ヘッダーのHTTP_HOSTは、両方とも 「sample.com」を返してきますので、  
これがループの原因となります。

これを回避するには、「wwwなし」「wwwあり」を別のドメインとして登録し、  
それぞれのドメインを「wwwを付与せずマルチドメインとして使用する（上級者向け）」に設定して、  
別々のフォルダを指定します。

SSL証明書は1つの証明書で「wwwなし」「wwwあり」どちらでも有効ですので、両方に設定します。  
※片方に登録してから「秘密鍵のバックアップ」をクリックして秘密鍵をダウンロードし、会員メニューの契約情報から「SSL証明書」をダウンロードします。  
これをもう片方のドメイン設定に登録します。

wwwなしの.htaccessは下記のようにします。

[code]

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^sample\.com$
    RewriteRule ^(.*)$ https://www.sample.com/$1 [R=301,L]
    
[/code]

wwwありの.htaccessは下記のようにします。

[code]

    RewriteEngine On
    RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
    RewriteRule ^(.*)$ https://www.sample.com/$1 [R=301,L]
    
[/code]

下記も参考になれば幸いです。  
<http://qiita.com/aniya/items/664491b523fe6c717b13>

