mod_rewriteでhttpからhttpsに転送(リダイレクト)する

mod_rewriteでHTTPからHTTPS(SSL)にリダイレクト

無料のSSL証明書「Let’s Encrypt」が普及してきているので、サイトをHTTPからHTTPSのSSL対応をしているサイトが増えてきていると思います。SSL化してHTTPSに対応しても、httpからアクセスはあると思うので、httpからのアクセスhttpsに転送する必要があります。この転送(リダイレクト)をmod_rewriteを利用して対応しようと思います

「.htaccess」を利用してSSLに転送する

リダイレクトの方法ですが「.htaccess」とApacheの設定ファイル(ssl.conf)などを利用するケースがあると思います。

下記では「.htaccess」を利用して、httpからhttpsへのリダイレクトしています。
「http://example.com」のhttpサイトにアクセスがあると、mod_rewritedで転送され「https://example.com」にリダイレクトされます。

apacheの設定ファイル「ssl.conf」でSSLに転送する

先程は「.htaccess」で対応しましたが、「.htaccess」を利用せずApacheの設定ファイルに直接記述して対応するケースも紹介します。

下記の設定では、「/etc/httpd/conf/vhosts/example.com.conf」というVirtualHostの設定をしている設定ファイルに、httpからhttpsへのリダイレクトする設定を追加しています。

転送の箇所は、<ifModule mod_rewrite.c> 〜 </ifModule>で囲った箇所がリダイレクトの設定です。設定ファイルを変更後はApacheのリロードか再起動を忘れないこと