Apache で、HTTP アクセスを HTTPS にリダイレクトさせる方法。

サイトを SSL 化することが、多くなってきました。

Apache で HTTP でアクセスがあった場合、HTTPS にリダイレクトさせるための、「 .htaccess 」に記述する方法です。
全てのページをHTTPS(SSL暗号化)にリダイレクトさせることができます。

HTTPS へリダイレクトの設定をするには、既にサイト全体が、SSL 化されていることが前提です。

.htaccess の記述例

コンテンツが置かれているディレクトリの、.htaccess ファイルに、以下のように記述します。
リダイレクトの設定をするためには、あらかじめ mod_rewrite モジュールが読み込まれている必要があります。

.htaccess が、利用できるレンタルサーバであれば、設定は可能です。

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

RewriteCond で、変数「HTTPS」の値が Off (設定されていない)の場合、HTTPS にリダイレクトさせます。

無料SSLを利用している場合

Let’s Encrypt などの無料SSLを利用している場合、スクリプト(certbot など)で「.well-known/acme-challenge/」 配下にファイルが生成され、認証が行われます。
無料SSL を利用している場合、.htaccess は、以下のように記述すると良さそうです。

<IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTPS} off
      RewriteCond %{REQUEST_URI} !\.well-known/acme-challenge
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

.htaccess に記述せず、Apache の設定ファイル(httpd.conf)に記述することも可能です。