httpからhttpsへリダイレクトさせる記述について解説「RewriteCond %{HTTPS} !on」など

今回は.htaccessなどに定義するhttpからhttpsへリダイレクトさせる記述について1行1行解説していきます。

今回ご紹介するのはエックスサーバーの「Webサイトの常時SSL化」に記載されている下記のコードです。

上記のソースコードを.htaccessの先頭に記述することにより、httpでアクセスした場合にhttpsへリダイレクトすることが可能となります。



httpからhttpsへリダイレクトさせる記述について解説「RewriteCond %{HTTPS} !on」など

まずは

RewriteEngine On

についてです。

これはmod_rewriteを有効にするディレクティブとなります。
mod_rewriteというのはApacheでURLのリライトやリダイレクトを行うためのモジュールで、このディレクティブによって有効化されます。

続いて

RewriteCond %{HTTPS} !on

についてです。

この行はリクエストがHTTPSでない場合に条件を設定する記述となります。%{HTTPS}は、リクエストがHTTPSであるかどうかを示すApacheサーバー変数です。!onは、HTTPSがオフであることを意味します。

似た意味の記述として
RewriteCond %{HTTPS} off
があります。

しかしこれは
RewriteCond %{HTTPS} !on
と比べて特定のHTTPリクエストヘッダが空であることを確認するために追加のチェックが行われることがあります。

基本的に
RewriteCond %{HTTPS} off
ではなく
RewriteCond %{HTTPS} !on
を使った方が良いでしょう。

最後に

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

についてです。

これは、リクエストをHTTPSにリダイレクトするためのルールとなります。
^(.*)$は、任意のURLをキャプチャするための正規表現パターンとなります。
https://%{HTTP_HOST}%{REQUEST_URI}は、リクエストされたURLをHTTPSに変換するためのリダイレクト先となります。
[R=301,L]は、リダイレクトの種類を指定するためのオプションで、R=301は、301のHTTPステータスコード(永続的な移動)を指定し、Lは、このルールが他のルールにマッチした場合に処理を停止することを意味します。

終わりに

今回はサンプルコードをもとに.htaccessなどに定義するhttpからhttpsへリダイレクトさせる記述について1行1行解説いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

Youtubeチャンネル開設いたしました。
チャンネル登録者1000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






PHP

Posted by ちこ