CGIアクセスをHTTPSへリダイレクトする方法

CGIへのアクセスをSSL通信にしたい。

ということで、真っ先に思い浮かんだのが、CGIへのリンク全てのURLを「https://~」というフルパスの記述に変える方法。でも、これだとSSL対応していないプラットフォームでの運用に支障が出るし、何より開発時と本番時で絶対パスを変えたりして、開発コストがかかりそう。

そんなわけで、apache側の設定でリダイレクトさせるのが一番かなと思って、やってみた。

<FilesMatch "\.cgi$">
    RewriteEngine   On
    RewriteCond     %{SERVER_PORT} !^443$
    RewriteRule     ^/usr/local/apache/htdocs/(.*)$ https://www.hoge.com/$1 [L]
</FilesMatch>

SSL通信(443ポート使用)でないCGIへのアクセスを、mod_rewriteを使って、httpsへリダイレクト。.phpとか.doとか、拡張子が増えたときでも、これなら簡単に追加できそう。LocationMatch ディレクティブとか使って、もっとキレイに実現する方法もありそうだけど、とりあえずは良しとしよう。

いまだにApacheの設定は、うまくいくまで手探り。なかなか1発で思うように動いてくれた試しがない。慣れの問題なのかもしれないけど、そんなにApacheをイジることはないからなあ。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/424