mod_rewriteのREMOTE_ADDR
特定のアドレス範囲からのリクエストを別のページへリダイレクトさせたいという要望。
10.0.0.0/8からのリクエストを飛ばしたいということなので、こう書いてみたんですが動作しません。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REMOTE_ADDR} ^10\.*$ RewriteRule ^.*$ http://www.example.com/index.html [R,L] </IfModule>
mod_rewriteでのREMOTE_ADDRはネットマスク表現は理解しないようです。例を参照すると^とか$とかあるので正規表現で表せばいいかと思っていたんですが、どうもそうでもなさそう。
試行錯誤して下記で期待した動作を得ることができました。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REMOTE_ADDR} ^10\. RewriteRule ^.*$ http://www.example.com/index.html [R,L] </IfModule>
なんだろ。アスタリスクがあるとNGな理由がわからない。