メモです。
フォームなどは SSL でアクセスさせたい、通常のページはhttpで、でも共通で使う画像などもありますよ、というとき、.htaccess のリダイレクトの設定だけでなんとかする方法。
前提
- http と https では、ファイルを置く領域が異なるとき
- /secure と /contact フォルダは https でアクセスさせたい
- /common フォルダはどちらからでもアクセスできるようにしたい
- その他は http でアクセスさせたい
http 側の .htaccess 例
RewriteCond %{REQUEST_URI} ^/secure/ [OR]
RewriteCond %{REQUEST_URI} ^/contact/
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
https 側の .htaccess 例
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]
これで、
- 通常のページはhttpsでアクセスしようとしてもhttpにリダイレクトされる
- /secure/ と /contact/ は http でアクセスしようとしても https にリダイレクトされる
- /common/ は http からでも https からでもリダイレクトされない
という設定になります。