エックスサーバー上で運営しているドメインに、無料独自SSLの設定を行いました。
ただ、無料独自SSLの設定をしただけだと、自動的に「https://~」のURLへ転送はされません。
http://~
https://~
のどちらでもアクセスできることになります。
これを統一する(常時SSL化)するには、「.htaccess編集」で次の記述を追加する必要があります。
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
そのドメインでは、wwwのあり・なし、index.html(php)のあり・なしも統一されていなかったので、「この際にやっちゃえ」と一気にやりました。
【wwwなしに統一】
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
【index.html(php)なしに統一】
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
まとめると、こうです↓
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
自分はいくつもドメインを運営しているのですが、今後、全部やっていくことになるのかな・・・
※2019.7.24追記
「wwwなしに統一」のコードを、以前は以下のようにしていました。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.●●●●●\.com$
RewriteRule ^(.*)$ https://●●●●●.com/$1 [R=301,L]
(●●●●● .com は自分のドメイン)
しかし、上記本文のように汎用的なソースでも出来るみたいでしたので、情報を更新いたしました。
