レンタルサーバーのコントロールパネルでSSLの設定が完了しても、常時SSL化の設定がすべて完了したとは言えません。

なぜなら、httpでもhttpsでもwebページにアクセス出来てしまうからです。

せっかくSSL化してhttps(暗号化されている)通信できるようにしたのに、http(暗号化されていない)通信が出来てしまっては意味がありません。

同一ページがhttpとhttpsでアクセス出来てしまうと、googleに重複コンテンツとして認識されてしまう可能性があるのでSEO的に良くないですし、httpでアクセスしてきたユーザーをhttpsへリダイレクトしてあげるのが親切ですよね。

httpからhttpsへのリダイレクトは.htaccessを利用します。

この記事では.htaccessへリダイレクトする為の記述内容を紹介します。

httpをhttpsにリダイレクトする.htaccessの記述方法

記述方法はとても簡単でたったの3行です。

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

参考サイト:htaccessでHTTPSにリダイレクトする

この3行を.htaccessへ記述するだけでhttpアクセスをhttpsへリダイレクトしてくれます。

下層ディレクトリのページも対応しているので、

http://example.com/****/****/ → https://example.com/****/****/

といった具合に、すべてのアクセスがトップページへリダイレクトされるのではなく、それぞれのページへhttpsリダイレクトされます。

.htaccessへの記述場所ですが、一番上(1行目)に記述すれば問題ないでしょう。

リダイレクトされない」「ページが表示されなくなった」といった問題が出たなら、他に記述されている場所の下へ移動するなど試してみてください。

僕がSSL化を試したサーバー、「ヘテムル」「ロリポップ」「エックスサーバー」では上記の記述内容で問題はありませんでした。

問題があったのがさくらサーバーです。

無限ループになってサイトが表示されなくなった「さくらサーバー」

さくらサーバーでSSL化をしてhttpsへリダイレクトする設定を.htaccessへ記述しました。

すると、なぜかページが表示されず、調べてみると無限ループに陥っていました。

何が悪いのかまったく分からず、色々と記述内容をいじったり調べたりしても解決方法が見つからず途方に暮れてましたが、なんとか解決方法を見つける事ができました。

参考サイト:SSL強制による無限リダイレクトが発生した場合の対処法

RewriteEngine On
RewriteCond %{ENV:HTTPS} !^on$
RewriteCond %{HTTP:X-Sakura-Forwarded-For} ^$
RewriteCond %{REMOTE_ADDR} !=[さくらサーバーのIPアドレス]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

上記の記述をすればさくらサーバーでもhttpからhttpsへリダイレクトできます。

さくらサーバーのIPアドレスは自分の環境を調べて記述してください。

さくらサーバーのIPアドレス確認方法

①コントロールパネルの「サーバー情報の表示 > サーバーに関する情報」をクリック。

②サーバーに関する情報にIPアドレスが表示されています。