mod_rewriteを利用してhttpアクセスからhttpsアクセスにリダイレクト
昨日書いたhttpでアクセスされた場合にhttpsにリダイレクトする方法の件、実際にやってみました。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteLog /var/log/rewrite.log
RewriteLogLevel 3
# for Operator
# 192.168.202.1からSSL以外でアクセスされた場合は、httpsにリダイレクト
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REMOTE_ADDR} ^192.168.202.1$
RewriteRule ^(/hoge/.*)?$ https://%{HTTP_HOST}$1 [L,R]
# for Owner
# SSL以外で特定のファイルにアクセスされた場合は、httpsにリダイレクト
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(/hoge/view/login/)(shipperLogin.html|shipperLogout.html)$ https://%{HTTP_HOST}$1$2 [L,R]
RewriteRule ^(/hoge/view/Owner/.*)?$ https://%{HTTP_HOST}$1 [L,R]
</IfModule>
なんか冗長だけど・・・
書き方を工夫すれば、もっと綺麗に書けるのかな。
.htaccessに記述しても動作しました。ただ、ログ出力の設定が出来なかったり、RewriteRuleの書き方でディレクトリ名を含んではいけないとか色々と違いがあるので注意が必要です。
httpd.confが編集できるなら、httpd.confに書いた方がいいですね。
閲覧:1222回 Tue Mar 04 15:49:34 +0900 2008

これだけで、うまくいったw
<IfModule mod_rewrite.c> RewriteEngine On #RewriteLog /var/log/rewrite.log #RewriteLogLevel 4 RewriteCond %{REMOTE_ADDR} !^192\.168\.202\.1$ RewriteRule ^/hoge/view/login/login.html$ - [F] RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^/hoge/view/i/(.*)?$ - [L] RewriteRule ^(/hoge/view/.*)?$ https://%{HTTP_HOST}$1 [L,R] </IfModule>