SSL化を行うと、wwwのありなし、http:とhttps:の違いで、1つのページごとに、4つのURLが割り当てられます。それを、リダイレクトにより1つのURLにまとめる正規化と呼ばれる作業を行います。
.htaccess(ドット・エッチ・ティ・アクセス)を使うと、特定のページを他のURLに転送する設定を行うことができます。
「webdesign.vdlz.xyz」を例にすると、SSL化を行うと以下の4つのURLが出現します。
- http://webdesign.vdlz.xyz/
- http://www.webdesign.vdlz.xyz/
- https://webdesign.vdlz.xyz/
- https://www.webdesign.vdlz.xyz/
この4つのURLをリダイレクトと呼ばれる転送操作を行うとこで、1つのサイトに統合します。
httpからhttpsへ301リダイレクトする
httpからhttpsへ301リダイレクトする方法は、インターネット上を探すと意外と簡単に見つかります。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
「example.com」のドメイン部分は、適宜自身のドメインに変更してください。
「RewriteCond」はリライトルールを適用する条件を記述するのですが、ここでの「%{HTTPS} off」は「httpsではない場合」ということになります。
そして「RewriteRule」は、リライトルールを記述するのですが、ここでは「記述したURLにリダイレクトする」という意味になります。
[R=301,L]は、Rは「リダイレクト」となり、Lは「適用したルールの終了」という意味になります。
この「.htaccess」を使用すると、
- http://webdesign.vdlz.xyz/ → https://webdesign.vdlz.xyz/
- http://www.freecad.vdlz.xyz/ → https://webdesign.vdlz.xyz/
- https://webdesign.vdlz.xyz/ → https://webdesign.vdlz.xyz/
- https://www.webdesign.vdlz.xyz/ → https://www.webdesign.vdlz.xyz/
このように、「https://webdesign.vdlz.xyz/」と「https://www.webdesign.vdlz.xyz/」の2つのURLにリダイレクトされます。
https://wwwから、https://へ301リダイレクトする
「https://webdesign.vdlz.xyz/」と「https://www.webdesign.vdlz.xyz/」の2つのURLを「https://webdesign.vdlz.xyz/」にリダイレクトする方法は、わからないので、リトルサーバーのサポートに問い合わせました。
1つのURL「https://webdesign.vdlz.xyz/」にまとめるには、以下のような記述に変更します。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://webdesign.vdlz.xyz/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.webdesign\.vdlz\.xyz$
RewriteRule ^(.*)$ https://webdesign.vdlz.xyz/$1 [R=301,L]
リトルサーバーのサポートに感謝です。
WordPressで、httpからhttpsへリダイレクトする際の注意点
WordPressサイトでhttpからhttpsへリダイレクトした場合、管理画面の設定 > 一般から「WordPress アドレス (URL)」「サイトアドレス (URL)」を https のURLに変更してください。
次の注意点として、サイトの下層ディレクトリにブログやコラムなどとしてWordPressを設置している場合、ルートディレクトリにある.htaccessの記述が効かないことが多くあります。
その場合は、WordPressを設置しているディレクトリにある.htaccessに下記を追加してください
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://example.com/blog/$1 [R=301,L]