特定のディレクトリのみhttpsにリダイレクトを行う

特定のディレクトリのみhttpsにリダイレクトを行う

SSLのためのリダイレクトをフォームディレクトリのみにかけるなどに指定する。
動きとしては、「指定ディレクトリに対してはhttpsへリダイレクト」「指定ディレクトリ以外はhttpへリダイレクト」となる。
※特定のディレクトリのみをリダイレクトすると、そのページから移動した場合にもhttps://の接続のままになる為、別途http://に戻す記述が必要になる。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# フォームのみhttp://→https:// リダイレクト
# https://をはずす(指定以外)
RewriteCond %{HTTPS} on  
RewriteCond %{REQUEST_URI} !(^/inquiry/.*$)  
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js)$ [NC]
RewriteRule /.*$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]  
# https://をかける(指定に対して)
RewriteCond %{HTTPS} off  
RewriteCond %{REQUEST_URI} ^/inquiry/.*$  
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js)$ [NC]
RewriteRule /.*$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]  
</IfModule>

—————————–

[Rewriteの標準設定]
RewriteEngine On ・・・ Rewrite機能自体のオン・オフを制御。
RewriteBase ・・・ Rewrite処理のベースになるURL

[ディレクトリ指定]
RewriteCond %{HTTPS} on ・・・ httpsでアクセスされた場合
RewriteCond %{HTTPS} off ・・・ httpでアクセスされた場合
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js)$ [NC] ・・・ 指定ファイルはリダイレクトから処理から除外する

参考サイト

トーハム紀行
mod_rewriteでディレクトリ別にSSLのON/OFFを切り替える
http://torhamzedd.halteria.com/2010/01/modrewritesslonoff.html