.htaccessで原則httpはhttpsにリダイレクトですが、一部のURLは除いてhttpアクセスできるようにしたいです。
cakephp2.3.5でwebサイトを構築しており、.htaccessの設定で外部からのアクセスは原則httpsで統一したいのですが、一部のURLはhttpアクセスしたいです。
以下のURLをhttpでも許可したい場合、下記コードですとurlを認識せず、httpsリダイレクトされてしまいます。
http://example.co.jp/test1/test2?no=1234
# index.php無しに統一
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteCond %{HTTPS} off
RewriteRule ^(.*)index.(html|htm|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.(html|htm|php)
RewriteCond %{HTTPS} on
RewriteRule ^(.*)index.(html|htm|php)$ https://%{HTTP_HOST}/$1 [R=301,L]
# CakePHP用
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)(#*.*)$ index.php?url=$1$2 [QSA,L]
#################################################################
# 今回のhttp→httpsを追加
#################################################################
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !(^/test1/)
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
.htaccessはproject/app/webroot/.htaccessを編集しております。
正規表現がよろしくないのでしょうか?
または他の設定の影響など。
また、.htaccessのデバッグを出せるようにしたのですが、RewriteCond %{REQUEST_URI} !(^/test1/)の判定など通常出ているのでしょうか?いまいちログを追えていない状態です。
参考サイト
http://qiita.com/gotohiro55/items/7daa988db23a5a8355c1
https://kana-lier.com/web/redirect/
http://d.hatena.ne.jp/shimonoakio/20080226/1204089340