当匹配 %{REMOTE_ADDR} 时,RewriteCond 与我的 IP 不匹配

当匹配 %{REMOTE_ADDR} 时,RewriteCond 与我的 IP 不匹配

我希望当流量从内部网络到达 Web 服务器时不执行 mod_rewrite 规则。Web 服务器是 apache 2.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建立规则。我遗漏了什么吗?

编辑:我已经尝试使用重写日志进行调查,但没有得到任何有用的信息。以下是请求期间发生的情况:

    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。

编辑2: 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

编辑3:我将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

为什么这样匹配?

编辑4:http://regexr.com?356tm告诉我,它不应该匹配......

答案1

我找到了问题的答案。正确的情况应该是:

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

相关内容