モノラルログ

マツオ ( @matsuoshi / monaural.net ) のざっくりしたブログです

http と https の領域を、.htaccess の設定で行ったり来たりさせる (2)

前回のメモの続きです。

http ←→ https (SSL) の行ったり来たりを .htaccess のリダイレクトの設定だけでなんとかする方法、http と https の領域が同じパターン編。

前提

  • http と https とで、ファイルを置く領域が同一のとき
  • /secure と /contact フォルダは https でアクセスさせたい
  • /common フォルダはどちらからでもアクセスできるようにしたい
  • その他は http でアクセスさせたい

.htaccess

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/secure/
RewriteCond %{REQUEST_URI} !^/contact/
RewriteCond %{REQUEST_URI} !^/common/
# CakePHP向け ここから
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !^/debug_kit/
# CakePHP向け ここまで
RewriteRule ^.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/secure/ [OR]
RewriteCond %{REQUEST_URI} ^/contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

これで、

  • 通常のページはhttpsでアクセスしようとしてもhttpにリダイレクトされる
  • /secure/ と /contact/ は http でアクセスしようとしても https にリダイレクトされる
  • /common/ は http からでも https からでもリダイレクトされない

という設定になります。