.htaccess応用【特定ページだけhttpとし、それ以外はhttpsとする方法】

.htaccess応用【特定ページだけhttpとし、それ以外はhttpsとする方法】Web開発者の備忘録特定のページにアクセスするときだけ http でアクセスしなおすようにし、それ以外のページにアクセスするときは https でアクセスする、という方法です。

.htaccess ファイルに記述する方法です。よく忘れるのでメモしておきます。。

RewriteEngine on
#HTTPS->HTTP
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^$|^index\.php$ http://%{HTTP_HOST}/abc/ [L,R]

#HTTP->HTTPS
RewriteCond %{SERVER_PORT} !^443$
RewriteRule !^$|^index\.php$ – [C]
RewriteRule ^(.*)?$ https://%{HTTP_HOST}/abc/$1 [L,R]

https://ホスト名/abc/
https://ホスト名/abc/index.php
と、TOPページにアクセスした場合に

http://ホスト名/abc/
http://ホスト名/abc/index.php
にリダイレクトするようになります。

http://ホスト名/abc/page.php
http://ホスト名/abc/def/
など、上記以外へのアクセスであれば

https://ホスト名/abc/page.php
https://ホスト名/abc/def/
にリダイレクトするようになります。

こういう使い方は普通しないですが。。

・「ディレクトリで終わるURL」という表現(正規表現)を mod_rewriteで指定する場合、
・OR条件で指定する場合
・http と https で条件指定する場合

の書き方の参考程度にはなるかと思います。

ちなみに、上の例は、 http と https で同じファイル領域にアクセスしている、という前提で書いています。
http と https でファイルの位置が htdocs 、 htdocs_ssl というように分かれている場合は、それぞれの場所に.htaccessファイルを書かないといけません。念のため。