htaccessで「http」を「https」にリダイレクトする方法と解説

方法

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

解説

基本

%{変数}は、変数を参照する書き方
HTTPSなど、htaccessでは、参照できる変数がいくつかある。

RewriteEngine on

URLを書き換えモードする記述

RewriteCond %{HTTPS} off

RewriteCond  対象文字列  条件式  [フラグ]

rewrite condition書き換え条件です。

対象文字列 - %{HTTPS}

%{変数}とは
HTTPS変数はHTTPSかどうかのフラグ、
内容は、onoffが入っています。

条件式 - off

offは条件式でHTTPSがoffだったら書き換えるよ!ってことです。

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

RewriteRule  正規表現  置換URL  [フラグ]

正規表現 - ^(.*)$

まずは、.これは何の文字でもOK!ってこと。
次に*これは、ひとつ前の文字が0回以上繰り返すものがOK
ひとつまえは.なので、何かしらの文字が0回以上繰り返したらOK!ってこと。要するに全部の文字列
VSCDOEの場合これで、同じように選択できてしまうんですよね。

そして、^これは、.*が行の先頭かどうか
$これは、.*が行の最後かどうか

行単位での指定だよって厳格になっているのかな?
念のためついているのか、つけないと動かないのかは試してないです。

置換URL - https://%{HTTP_HOST}%{REQUEST_URI}

%{変数}とは
HTTP_HOSTはホスト名、私の場合は417.run
REQUEST_URIはこのページの場合/how-to-redirect-www-and-http-to-https-with-htaccess-and-explanation/2684/です。
つまり、展開すると、

https://417.run/how-to-redirect-https/2684/

フラグ - [R=301,L]

R=301は、リダイレクト301ページの引っ越しを示します。
LLastこれに該当したら、終わりです。URLの置換に成功したら終わりということです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です