• RSS

.htaccess と mod_rewrite による HTTP と HTTPS リダイレクトのまとめ

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

サイトの中で、HTTPS でアクセスさせたいディレクトリ「secure/」があるとして、HTTP アクセスを強制的に HTTPS でリダイレクトする方法のまとめです。

サーバがSSLに対応しており、.htaccess 、mod_rewrite が使えれば HTTP アクセスを SSLでリダイレクトすることが可能ですし、またその逆(SSL → HTTP でリダイレクト)も可能です。

secure/ディレクトリを HTTPS でリダイレクト

まずは secure/ディレクトリを SSL に対応させるための .htaccess です。

secure/ディレクトリに以下の .htaccess を設置します。
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
RewriteCond %{HTTPS} off は「SSLが無効の場合」という条件で、
この条件の時は RewriteRuleHTTPS でリダイレクトさせています。

最終行の [R,L] は、[R]は「redirect」で、[L]は「last」の意味です。
[L]と書けば「ここで RewriteRule はおしまい」となります。

ちなみに、[R]は「302リダイレクト」ですが、[R=301] と書けば「301リダイレクト」になります。


SSL アクセスを HTTP でリダイレクト

先とは逆で、SSL アクセスを http:// でリダイレクトする方法です。

ルート直下に以下の .htaccess を設置します。
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{HTTPS} on
    RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</IfModule>
https:// でアクセスされたページを http:// でリダイレクトする感じです。




  • このエントリーをはてなブックマークに追加
  • follow us in feedly

コメント

コメントを残す