サイトの中でHTTPSでアクセスさせたいディレクトリ「secure/」があるとして、HTTPアクセスを強制的HTTPSでリダイレクトする方法のまとめです。
サーバがSSLに対応しており、.htaccess、mod_rewriteが使えればHTTPアクセスをSSLでリダイレクトすることが可能ですし、またその逆(SSL → HTTP でリダイレクト)も可能です。
secure/ディレクトリをHTTPSでリダイレクト
まずは secure/ディレクトリを SSL に対応させるための.htaccessです。サイトの中で、HTTPSでアクセスさせたいディレクトリ「secure/」があるとして、HTTPアクセスを強制的にHTTPSでリダイレクトする方法のまとめです。
サーバがSSLに対応しており、.htaccess 、mod_rewrite が使えれば HTTPアクセスをSSLでリダイレクトすることが可能ですし、またその逆(SSL → HTTPでリダイレクト)も可能です。
secure/ディレクトリをHTTPSでリダイレクト
まずはsecure/ディレクトリをSSLに対応させるための.htaccessです。secure/ディレクトリに以下の.htaccessを設置します。
1 2 3 4 5 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
RewriteCond %{HTTPS} off
は「SSLが無効の場合」という条件で、この条件の時はRewriteRule
で HTTPSでリダイレクトさせています。
最終行の[R,L]
は、[R]は「redirect」で、[L]は「last」の意味です。
[L]
と書けば「ここで RewriteRule はおしまい」となります。
ちなみに、[R]
は「302リダイレクト」ですが、[R=301] と書けば「301リダイレクト」になります。
SSLアクセスをHTTPでリダイレクト
先とは逆で、SSLアクセスをhttp://でリダイレクトする方法です。ルート直下に以下の.htaccessを設置します。
1 2 3 4 5 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTPS} on RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L] </IfModule> |
https://でアクセスされたページをhttp://でリダイレクトする感じです。
参考ページ
apache :: Rewrite(mod_rewrite)
コメント