最終更新日:
公開日:
WEB制作
htaccessでサイトURLをHTTPからHTTPSに強制リダイレクトする
ユーザーへの配慮とSEO対策の一貫として意味のある独自SSLを使ったHTTPS接続。今回はSSL導入後に設定したい、通常のHTTP接続によるアクセスをHTTPSへ強制リダイレクトさせる方法を解説します。
目次
すっかり浸透したHTTPS
数年前は一部のフォームやWebサービスでしか見かけなかったHTTPS接続。
今ではすっかり見慣れたものとなり、フォームやログインが必要なサービスでHTTPSじゃないサイトは敬遠したいぐらいのものとなりました。
今回は、htaccessを使ってサイトの全ページを一括でHTTPS接続にする設定方法について解説していきます。
htaccessを使った設定方法
ここでは仮に、「sample.com」というドメインを持ったサイトについて設定を行うこととします。
また、Apacheで「mod_rewrite」(htaccessによるURLの書き換えが可能かどうかの設定)が有効である必要があります。
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://sample.com/$1 [R=301,L]
</IfModule>
まずは2行目の「RewriteEngine on」でリライトを有効にしています。
3行目の「RewriteCond」は書き換えをするかの条件式です。
「%{HTTPS} off」はHTTPSが無効(通常のHTTP)の場合、書き換えを行うように条件式を設定しています。
4行目の「RewriteRule」が書き換え後のURLの指定になります。
「^(.*)$」はリクエストされたドメイン以下のパスです。
「^」は先頭、「$」は末尾を現し、その間にある「(.*)」は任意の0文字以上の文字を現しています。
先頭から末尾までの全ての文字を一時保存し、「$1」という変数で呼び出していることになります。
「http://sample.com/index.html」であれば「https://sample.com/index.html」にリダイレクトされ、「http://sample.com/about.html」は「https://sample.com/about.html」にリダイレクトされます。
画像やスタイルシート、JavaScriptなどドメイン直下になる全てのファイルが対象です。
HTTPSを無効にする設定方法
あまりないかもしれませんが、逆にHTTPSからHTTPへの強制リダイレクトも可能です。
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://sample.com/$1 [R=301,L]
</IfModule>
3行目の「RewriteCond」の中で、「%{HTTPS} on」(HTTPSが有効)の場合に書き換えをする条件式に変更しています。
4行目の「RewriteRule」のドメインの前を「http://」としている点も重要です。
以上、htaccessによるHTTPS接続に強制リダイレクトする方法でした。