回答編集履歴

2 さくらサーバーの場合の注意事項追加

Tomak

Tomak score 1588

2017/09/14 16:28  投稿

リライトの設定と他の設定が混ざっているので下記の関係ある部分のみについて回答いたします。さくらサーバーだという部分を読み飛ばしていましたので修正しました。
 
さくらサーバーの場合、SSLは80番ポートをProxyしているのでSSLも80番ポートです。(443ではありません)  
また、SSLが正常に成功すると`%{HTTP:X-Sakura-Forwarded-For}`にクライアントのIPアドレスが入り、SSL接続でない場合は「空」になります。  
```apache
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC]
RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L]
Redirect permanent http://www.hoge.com/ https://www.hoge.com/
```
↓↓↓↓ 下記のようにしてみてはいかがでしょうか。↓↓↓↓
```apache
RewriteEngine on
# http://www.hoge.com -> https://www.hoge.com
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]
```
`https://hoge.com`→`https://www.hoge.com`も含めたい場合は、下記のようにします。
```apache
RewriteEngine on
# http://hoge.com -> https://www.hoge.com
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ https://www.%1/$1 [R=301,NC,L]
# http://www.hoge.com -> https://www.hoge.com
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]
```
```
なお、さくらサーバーに限った話ではないですが、SSLの証明書を作成したときのドメイン限定でのアクセスになるので気をつけてください。(SSL作成したときにhoge.comで作成してしまったら、https://www.hoge.comではアクセスできません)
1 さくらサーバーを考慮

Tomak

Tomak score 1588

2017/09/14 16:13  投稿

リライトの設定と他の設定が混ざっているので下記の関係ある部分のみについて回答いたします。
リライトの設定と他の設定が混ざっているので下記の関係ある部分のみについて回答いたします。さくらサーバーだという部分を読み飛ばしていましたので修正しました。
```apache
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(hoge\.com)(:80)? [NC]
RewriteRule ^(.*) https://www.hoge.com/$1 [R=301,L]
Redirect permanent http://www.hoge.com/ https://www.hoge.com/
```
↓↓↓↓ 下記のようにしてみてはいかがでしょうか。↓↓↓↓
```apache
RewriteEngine on
# http://www.hoge.com -> https://www.hoge.com
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]
```
`https://hoge.com`→`https://www.hoge.com`も含めたい場合は、下記のようにします。
```apache
RewriteEngine on
# http://hoge.com -> https://www.hoge.com
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteCond %{HTTP_HOST} (.+)$
RewriteRule ^(.*)$ https://www.%1/$1 [R=301,NC,L]
# http://www.hoge.com -> https://www.hoge.com
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{HTTP_HOST} ^www\.hoge\.com$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,NC,L]
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る