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