httpアクセスをhttpsに変換
httpで運用してきたサイトを https にした場合、これまでの http ではアクセスできなくなる。
歴史があるサイト程それでは困るので、http でアクセスしてきた接続要求を https に変換してやることが求められる。
私の場合はアクセスが殆ど無いサイトなのでその必要は無いのだが興味があったので変換してみた。
やり方は幾つかあるようだが、.htaccess を使う方法が馴染みがあるのでこの方法でやることとした。
まず実施しないといけないのは、apache2 が .htaccess を使えるようにすることである。--①
次に .htaccess の作成である。------------------------------------------------------②
①Apache2での.htaccessを有効とする方法
DebianのApache2で.htaccessファイルを有効にするには次のようにする。
(1) Apache2のモジュール mod_rewrite.soを有効にする。
# a2enmod rewrite
モジュールが組み込まれたのを確認する。
# apache2ctl -M
とコマンドを入力して
rewrite_module (shared)
と表示されればOKです。
(2) Apache2コンフィグレーションファイルの編集
ここでは、デフォルトのサイトで.htaccessを有効にするものとする。
その場合はファイル:
/etc/apache2/sites-available/000-default.conf
に以下の行を追加する。
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
(3)Apache2の再起動
②.htaccessの作成
-----------------------------------------------------------
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://anabuki.mydns.jp/$1 [R=301,L]
まずは1行目の「RewriteEngine on」でリライトを有効にしています。
2行目の「RewriteCond」は書き換えをするかの条件式です。
「%{HTTPS} off」はHTTPSが無効(通常のHTTP)の場合、書き換えを行うように条件式を設定しています。
3行目の「RewriteRule」が書き換え後のURLの指定になります。
「^(.*)$」はリクエストされたドメイン以下のパスです。
「^」は先頭、「$」は末尾を現し、その間にある「(.*)」は任意の0文字以上の文字を現しています。
先頭から末尾までの全ての文字を一時保存し、「$1」という変数で呼び出していることになります。
「http://sample.com/index.html」であれば「https://sample.com/index.html」にリダイレクトされ、
「http://sample.com/about.html」は「https://sample.com/about.html」にリダイレクトされます。
画像やスタイルシート、JavaScriptなどドメイン直下になる全てのファイルが対象です。