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に書いた方がいいですね。

このログへのコメント(1件)

これだけで、うまくいった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>

コメント投稿フォーム

コメント

※半角英数字だけのコメントは投稿できません。

トラックバック

関連ログ