htaccess で HTTP の通信を強制的に HTTPS にリダイレクトさせる

スマートフォンやタブレットで利用するアプリの通信は暗号化されていない HTTP ではなく暗号化されている HTTPS が必須化されつつ中、ブラウザで閲覧するウェブサイトにおいても個人情報が無くても常時 HTTPS での通信が常識化してきており、従来 HTTP で公開してきたサイトを htaccess を利用して HTTPS に強制的にリダイレクト(再送信)することでウェブサイトを HTTPS に対応させるコストを削減する。

htaccess で http を強制的に https にリダイレクトさせる




1.htaccess でリダイレクトする必要性


前述した通り、昨今のインターネットでやり取りする通信は HTTP から HTTPS で行うのが一般的になりつつありが、ウェブサイト内のコンテンツが多いと各コンテンツへのリンクを http://***https://*** に変換するのは手間がかかるのと変換し忘れるミスも起こりえる。
そこで、 htaccess で HTTP で来た通信をサーバ側で全て HTTPS にしてリダイレクトすることでウェブサイトの修正の手間が軽減され、HTTPS への変換漏れも防止できる。
また、Google など検索エンジンの検索結果には http://*** でインデックス化されていたり、外部のウェブサイトから自サイトにリンクをしてもらっているとき、各閲覧者がブラウザにお気に入り(ブックマーク)が http://*** として残る中で自サイトを全て https://*** でのみ表示されるようにしてしまうと閲覧時に「ページが見つかりません」となってしまうため、サーバ側で HTTP から HTTPS にリダイレクトすることが推奨される。

2.htaccess でリダイレクトする方法


htaccess でリダイレクトさせるためには次の手順となる。

1) htaccess ファイルの準備
サーバに何も記述していないテキストファイル(***.txt)をアップロードし、FTP や SFTP のソフトで .htaccess に名前変更する。

2) htaccess に下記の記述を行う
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://自ウェブサイトのホスト名%{REQUEST_URI} [R,L]


3.リダイレクトの記載内容の説明


「RewriteCond」は、Webサーバ「Apache」の機能である mod_rewrite の一つで、アクセスされた URL の書き換えを行う条件を指定する。
RewriteRule の前に記述する必要がある。
RewriteCond が指定する条件を満たさない限り、その直後に記述されている RewriteRule の処理は実行されない。
ここで記述する「RewriteCond %{HTTPS} off」は HTTPS の通信で無いことを条件化している。

次の「RewriteRule」の一文にて ^(.*)$ はブラウザから送られてきた URI がどのような文字列であっても https://自ウェブサイトのホスト名%{REQUEST_URI} へリダイレクトすることを示している。
「REQUEST_URI」はブラウザから送られてきた URI を返すもので「http://sample.com/index.html」であれば、ドメインの部分を抜いた「/index.html」が該当する。
[R] リダイレクトすること表し、[L] は書き換えプロセスの終了を表す。
[R] は [R=303] のようにリダイレクトコードも付加できる。

「RewriteRule」の例文でサイトによっては https://%{HTTP_HOST}%{REQUEST_URI} と紹介していることもあるが、HTTP ヘッダーが偽装されているとその偽装先にリクエストされる脆弱性となるため、できるだけ自ウェブサイトのホスト名を記載するのが好ましい。

4.htaccess を利用したリダイレクトの応用


htaccess のリダイレクトは HTTP を HTTPS に変えるだけでなく、コンテンツの削除やリニューアルでコンテンツの URL が無くなってもトップページや新しい URL など任意の先にリダイレクトさせることができる。
そうすることで、「ページが見つかりません」が閲覧者に表示されなくなり継続したウェブサイトへのアクセスが見込める。
また、「RewriteCond」を利用して https://www.*** を www が無い https:// に統一させたり、特定のディレクトリやページには特定の IP やホスト名でのみアクセスさせるといった制御も可能になる。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント