前回のメモの続きです。
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 からでもリダイレクトされない
という設定になります。