我正在尝试使用IfDefine来阻止CustomLog生成的IP列表以避免再次使用log ip,但它无效。我更改了CustomLog条件,可以观察到奇怪的行为:
RewriteMap blacklist txt:/var/www/blacklist.log
RewriteCond ${blacklist:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${blacklist:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
RewriteRule ^ - [F,E=BLOCKED_IP]
<IfDefine !BLOCKED_IP>
SetEnvIf Request_URI "^/xmlrpc\.php$" BAD_BEHAVIOR
CustomLog /var/log/apache2/blacklist.log "%h ## %t BAD_BEHAVIOR \"%r\" %>s %b \"%{User-agent}i\"" env=BLOCKED_IP
</IfDefine>
即使BLOCKED_IP为true,IfDefine中的代码也会执行而且CustomLog有一个反条件...它没有任何意义-.-
有人可以解释这种行为吗?
答案 0 :(得分:0)
IfDefine不适用于在应用程序启动后定义的环境变量。
仅适用于通过-Dparameter在命令行上设置的参数
答案 1 :(得分:0)
Apache 2.4不支持使用<IfDefine !xxx>
之类的用法,请删除“!”将正常工作