web-dev-qa-db-ja.com

%{REMOTE_ADDR}で一致するときに、RewriteCondがIPで一致しません

トラフィックが内部ネットワークからWebサーバーに到達しているときに、mod_rewriteルールが実行されないようにしたい。 WebサーバーはApache2.2です。次のRewriteCondは、書き換えルールを保護するためのものです。

        RewriteCond %{REMOTE_ADDR} !=192\.168\.[0-15]\.[1-255]

Ip 192.168.15.173を使用してWebサーバーにアクセスすると、ルールが開始されていないように見えるため、内部アドレスに関係なく書き換えルールが実行されます。私の間違いはどこにありますか?

より単純なマッチング:

    RewriteCond %{REMOTE_ADDR} !=192\.168\.15\.173

同様に失敗します。

http://httpd.Apache.org/docs/trunk/rewrite/access.html の「Blockingof Robots」の例を使用して、ルールを作成しました。私は何かが足りないのですか?

編集:私はすでにリライトロギングを使用して調査しようとしましたが、それは有用な情報をもたらしませんでした。それがリクエスト中に起こることです:

    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) init rewrite engine with requested uri /test/
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (3) applying pattern '^/test/(.*)' to uri '/test/'
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) rewrite '/test/' -> 'https://example2.com/'
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (2) explicitly forcing redirect with https://example2.com/
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (1) escaping https://example2.com/ for redirect
    192.168.15.173 - - [12/Jun/2013:13:50:17 +0200] [example.com/sid#7f3c6afb5e30][rid#7f3c6f864b68/initial] (1) redirect to https://example2.com/ [REDIRECT/302]

このログに記載されているRewriteConditionも表示されません。

Edit2:Apacheバージョンの詳細は次のとおりです。

Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 26.el6.centos
Size        : 2.9 M
Repo        : installed
From repo   : anaconda-CentOS-201303020151.x86_64

Edit3:LogLevelを4に上げたところ、より多くの結果が得られました。

192.168.15.173 - - [12/Jun/2013:14:18:05 +0200] [example.com/sid#7f3c6afdfdb0][rid#7f3c6f880568/initial] (4) RewriteCond: input='192.168.15.173' pattern='!=192\.168\.15\.173' => matched

なぜこれが一致するのですか?

Edit4: http://regexr.com?356tm は、一致してはならないことを教えてくれます...

1
noamik

私は自分の質問に対する答えを見つけました。正しい条件は次のとおりです。

RewriteCond %{REMOTE_ADDR} !192\.168\.[0-9]+\.[0-9]+
3
noamik