

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

さくらサーバーで独自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の記述がお分かりでしたお教えください。


CC BY-SA 3.0
2016-06-14T06:43:14.563
26736
2016-11-22T09:18:03.030
2016-06-14T13:50:14.633
8000
12483
question
.htaccess
さくらサーバーのhtaccessでhttpsを検知するには


「httpsアクセスの場合は変数が代わるようでfalseが返る」のであれば、X-Sakura-Forwarded-For
が空じゃない、かつ、HTTP_HOST が www.sample.com ではない場合にリダイレクトするルールセットを追加すればいいと思います。

[code]

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


CC BY-SA 3.0
2016-06-14T15:28:05.227
26753
2016-06-14T15:28:05.227
4603
26736
answer


さくらのレンタルサーバーで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>


CC BY-SA 3.0
2016-11-22T08:17:03.263
30596
2016-11-22T09:18:03.030
2016-11-22T09:18:03.030
19663
19663
26736
answer