httpsの設定を終えて、いざ自分のサイトにアクセスしてみたら、http と https の両方で表示できてしまう状態の方もいるのではないでしょうか?
今回は、http でアクセスがあった場合、https でのアクセスにリダイレクトさせる方法を見てみたいと思います。
http を https にリダイレクト
例えば、
「http://hogeFuga.com」でサイトにアクセスされたときに
「https://hogeFuga.com」とアクセスされたものとしてサーバに認識させることをいいます。
この記述によって、「http」でサイトにアクセスされた場合でも、自動的に「https」通信にリダイレクトします。
記述例1:
1 | RewriteEngine On
|
2 | RewriteBase /
|
3 |
|
4 | RewriteCond %{HTTPS} off
|
5 | RewriteRule ^(.+)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
|
各行の説明
.htaccessの始めに記述します。
これを省略したり、「Off」と記述していると.htaccessが機能しません。
どのディレクトリから.htaccessの記述を適用するかパスを指定します。
「/」は、index.html などのブラウザにページ内容を表示するファイルが入っているディレクトリ(ルートディレクトリ)を表しています。
.htaccessが、ルートディレクトリにあ場合、この「RewriteBase」の記述は省略してもOKです。
4 | RewriteCond %{HTTPS} off
|
httpsでないときという意味です。
「RewriteCond」の「Cond」は「Condition」の略省です。書き換える条件を記述します。
5 | RewriteRule ^(.+)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
|
URLを「https」に書き換えよという意味です。
正規表現で、
「^(.+)$」は、任意(何でもいい)の文字列を表します。あらゆる文字列に対応すると言う意味です。
変数
「%{HTTP_HOST}」は、URLにおけるドメイン名やIPアドレスの部分を格納したものになります。
例えば、「http://
hogeFuga.com/index」の
「hogeFuga.com」の部分のことです。
また、ドメインを取得していない場合は、「http://
192.168.3.2/index」の
「192.168.3.2」のIPアドレス部分のことです。
変数
「%{REQUEST_URI}」は、「http:////hogeFuga.com/
index」の
「index」の部分を指します。
「[R]」は、外部リダイレクトさせるフラグです。
この記述を省略すると、httpでのアクセスを自動的にhttpsにリダイレクトしませんでしたので、注意してください。
最後に
今回はhttpsへのリダイレクトについてでした。
.htaccessでのこの設定は、あくまでも、既にhttpsへの移行を終えている状態の最後の仕上げですから、httpsへの設定は別途行ってください。
それでは、続きはまた次回にご期待を!