httpsのアクセスだけ許可

ちょっと調べてみたがすぐには見つからなかったので、自分で考えてみた。
いつか使うことがあるかもしれないのでメモ。mod_rewrite 使用。


    RewriteEngine On
    RewriteCond %{HTTPS} off [NC]
    RewriteRule ^.*$ - [L,F]

設定の意味を文章で書くと、「変数 "HTTPS" が "off" にマッチ([NC]=大文字小文字関係なし)しなければ、403 Forbidden にして終了([L,F])」という感じかな。
.htaccess で動作を確認。RewriteRule がURIをすべて対象にしてるが、ここを書き換えれば特定のURIを対象にできるはず。

そんだけ。

追記

RewriteRule を

    RewriteRule ^(.+\.jpg)$ - [L,F]

とか、そんな感じで JPEG 画像のみを対象にしてみたら、狙い通りに JPEG 画像のみ HTTPS でないとアクセスできないようになった。
さらに予想外だった効果として、autoindex が生成したファイルのリストからも見えなくなった。Forbidden だからか。なるほど。
そんだけ。