TracやWikiなどのWebアプリケーションを使ってて、普段は通常のhttpアクセスを行い、ログイン部分だけは暗号化のためにhttpsにリダイレクトしたい場合があります。
まず、特定のファイルなどをSSL以外でアクセスさせないようにするには、httpd.confで以下のように設定します。ここでは/home/mazn/public_html/hogeをSSL限定にしてみます。
<Directory "/home/mazn/public_html/hoge"> SSLRequireSSL </Directory>
直接httpsでアクセスすれば、もちろんアクセスできるのですが、Webアプリの場合ソースの改変が必要だったりするので、httpでアクセスがきた場合はmod_rewriteでhttpsに書き換えてあげます。ここでは/hoe/login へのアクセスをhttpsにしています。
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^/hoge/login(.*)$ https://%{HTTP_HOST}/hoge/login [R=301,L] </IfModule>
RewriteRule で書き換えのルールを指定します。”^”と”$”でマッチさせるルールの初めと最後を指定します。(.*)はloginに続く任意の文字列を意味しています。末尾の[]はオプションでRはリダイレクトで、HTTPレスポンスとして301(=Moved Permanently)を返します。Lは条件にマッチした場合そこで次のルールを評価しないという意味です。
リダイレクト後のloginにリダイレクト前の(.*)にマッチした部分を追加するには、\1を使います。
RewriteRule ^/hoge/login(.*)$ https://%{HTTP_HOST}/hoge/login\\1 [R=301,L]
参考 : mod_rewriteリファレンス