エックスサーバーで「.htaccess」ファイルを編集してhttpsリダイレクト設定を入れてみました。
サイトにhttpでアクセスされた際にhttpsにリダイレクトするという処理は、「.htaccess」ファイルを編集して5行ほどコードを追加することで実装可能です。
「.htaccess」を編集してhttpsリダイレクトを設定する
実際にエックスサーバーの「.htaccess」を編集してhttpsリダイレクトを設定していきます。
※「.htaccess」ファイルの変更については、万が一に備えて事前にバックアップを取得しておくことを強くお勧めします。
・Xserverのサーバパネルから「.htacces編集」をクリックします。
・リダイレクト設定したいサイトのドメインを選択します。
・「.htaccess編集」タブを選択して、表示されるファイルの中に以下のモジュール文を挿入し、画面下部にある「確認画面へ進む」をクリックします。
※私は「#END WordPress」の行のあとに挿入しました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
モジュール文の解説は下部の [参考] モジュール文の解説 で解説します。
・確認画面で「実行する」をクリックします。
・「.htaccessの編集が完了しました。」と表示されれば完了です。
設定後にリダイレクトを確認する
設定変更後の確認も兼ねて実際にhttpアクセスがリダイレクトされるかどうかを試してみます。
ブラウザからhttpでアクセスすると
URLの左に鍵マークが表示され、httpsでのアクセスにリダイレクトされます。
[参考] モジュール文の解説
<IfModule mod_rewrite.c>
・・・・
</IfModule>
1行目と5行目にある<IfModule mod_rewrite.c>・・・</IfModule>は、
「mod_rewrite」と呼ばれる [リダイレクト処理の機能を持つモジュール] があれば・・・の処理を実行してください、という意味です。
リダイレクト処理を実行するために必要な記載ルールなんだなと思っていただければそれでOKかと思います。
RewriteEngine On
2行目は、「RewriteEngine」を「On」とすることで、mod_rewriteモジュールを起動させています。
これまたリダイレクト処理を実行するためのお作法だと思ってもらってOKです。
RewriteCond %{HTTPS} off
3行目では「RewriteCond」を用いて、[どういった場合に] という条件を記載しています。
この条件に該当するものが4行目の処理を実行する といった流れです。
今回の「%{HTTPS} off」という記載だと、「httpsではない通信の場合=httpアクセスの場合」という[条件] を定義しています。
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
4行目がメインとなる処理で、「RewriteRule」を用いてリダイレクト処理を実行します。
「RewriteRule」の書き方は以下のように書きます。
- RewriteRule {アクセスパターン} {変換内容} [{フラグ}]
{アクセスパターン}と一致するものを{変換内容}に変換してリダイレクト処理を実施します。
{フラグ}はこの処理に対しての付加要素を加えるもので、「R=301」とすれば301リダイレクトを実行します。 ※これもリダイレクト処理を(ry
また、「L」を指定すれば、{アクセスパターン}と一致して{変換内容}に変換したら、その時点で処理を終了させます。
※今回のような1行の処理であればあまり意味はないですが、「RewriteRule」を複数利用するときなどにはよく用いられます。
今回の記載では、{アクセスパターン}には「^(.*)$」、{変換内容}には「https://%{HTTP_HOST}%{REQUEST_URI}」が指定されています。
「^(.*)$」は正規表現なので、書き下すと、文頭(^)から始まり、任意の1文字(.)の0回以上の繰り返し(*)を経て文末($)となるパターン、いわゆるすべての文字列が該当します。
「https://%{HTTP_HOST}%{REQUEST_URI}」は、ユーザからのアクセスを [https://] から始まるURLに変換しています。
4行目の処理をまとめると、
- 文頭(^)から始まり、任意の1文字(.)の0回以上の繰り返し(*)を経て文末($)となるパターンに該当する場合に処理をする。
- 処理の内容は、[https://] から始まるURLに変換して、301リダイレクトを実施し、リダイレクト処理を終了させる。
となります。