httpからhttpsへリダイレクトさせる記述について解説「RewriteCond %{HTTPS} !on」など
今回は.htaccessなどに定義するhttpからhttpsへリダイレクトさせる記述について1行1行解説していきます。
今回ご紹介するのはエックスサーバーの「Webサイトの常時SSL化」に記載されている下記のコードです。
1 2 3 |
RewriteEngine On RewriteCond %{HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
上記のソースコードを.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行解説いたしました。
ディスカッション
コメント一覧
まだ、コメントがありません