Apache: httpからhttpsへの転送

Apacheのrewriteモジュールを使ってhttpへのアクセスをhttpsに転送する方法。

Contents

設定方法

httpにきたアクセスを、httpsの同じURLに転送するには、.confか.htaccessに次のように記述します。


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

httpに接続が来たら、URLに関係なくhttpsのトップページに転送する場合の設定。


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

Apacheモジュールの確認方法

mod_rewriteモジュールが使えるようになっているかは次のコマンドで確認できます。

sudo apache2ctl -M

コマンドを実行して rewrite_module が表示されればrewriteモジュールが使えます。

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 passenger_module (shared)
 php5_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 socache_shmcb_module (shared)
 ssl_module (shared)
 status_module (shared)

Apachaモジュールを有効にするには

rewriteモジュールがロードされていない場合は次のコマンドで有効化出来ます。

sudo a2enmod rewrite