この記事は 2023/04/13 に見直しています。
近年、常時SSL化するのが普通となり、エックスサーバーやロリポップなどのレンタルサーバーではSSLが無料で導入できるようになるなど、以前とは格段にWebサイトの常時SSL化がやりやすくなりました。
しかしWebサイトの常時SSL化をしても、一部のWebサイトではURLをhttpsからhttpに書き換えて接続してみたところ、httpで閲覧できてしまうサイトがありました。
URLを統一するには.htaccessというファイルを書き換えれば良いのですが、色々なサイトを調べるとサイト毎に紹介されている記述が違い迷われている方も多いのでないでしょうか。
そこで今回はWebサイトの常時SSL化時に必ずやっておいたほうがいい、URLを統一する方法についてご紹介します。
URLの統一(URLのリダイレクト)とは
目次
SSLを導入すると状況によって異なりますが、下記の4パターンで同じWebサイトを閲覧できるのではないかと思います。
- http://xxx.com/
- http://www.xxx.com/
- https://xxx.com/
- https://www.xxx.com/
サーバーのデフォルトの設定にもよりますが、さらにindex.htmlやindex.phpを追加したURLでも表示できることがあります。
- http://xxx.com/index.html
- http://www.xxx.com/index.html
- https://xxx.com/index.html
- https://www.xxx.com/index.html
これらの複数のURLを1つにまとめて表示できるようにすることをURLの統一と呼びます。
サイト全体を通してすべてのURLでhttpsのURLになりますので、常時SSL化(常時HTTPS化)と呼ばれることもあります。
URLを統一するメリット
- httpsだけで閲覧できるようにすることで、SSLの本来の役割であるセキュリティの強化を正しく活用できる。
- 複数のURLで閲覧できる場合、Googleに色々なURLのページが認識されるのを防ぐことができる。
URLを統一する方法
レンタルサーバーやWordPressのプラグインを使って統一する方法
通常であれば.htaccessというファイルをテキストエディターで開いて編集する必要がありますが、結構シビアな作業なのでレンタルサーバーによってはコントロールパネルから簡単でできるようにしている場合もあります。
さくらのレンタルサーバの場合は下記の解説ページが見つかりました。
コントロールパネルからクリックしていくだけで設定ができるので便利そうです。
エックスサーバーの場合はコントロールパネルから簡単に設定はできるという記事は見当たりませんでしたが、手動での設定方法を詳しく解説しているページはありました。
下記の記述を使いたいのであれば、エックスサーバーやロリポップのサーバーをレンタルした際の最上位に.htaccessというファイルが生成されているので、そのファイルを開き、下記の記述を追加してください。
もしWordPressを使っているので下記の記述とは別途WordPressのダッシュボードから設定を変更する必要があります。
.htaccessは記述を間違うとWebサイトが表示されなくなってしまうので、バックアップをとった上で実行することをお勧めします。
httpsで統一
# BEGIN SSL統一
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END SSL統一
https・wwwなし・index.htmlなしで統一
# BEGIN SSL統一
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,R=301]
RewriteCond %{THE_REQUEST} ^.*/index.(html|php)
RewriteRule ^(.*)index.(html|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
# END SSL統一