我尝试多紧要紧。我的htaccess没有任何意义。我想阻止来自特定IP的POST请求。
此代码有效并阻止所有POST请求:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteRule .* – [F,L]
</IfModule>
我只需要将条件添加到黑名单IP中,如下所示:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} =123.123.123.123 [OR]
RewriteCond %{REMOTE_ADDR} =222.222.222.222 [OR]
RewriteCond %{REMOTE_ADDR} =111.111.111.111
RewriteRule .* – [F,L]
</IfModule>
在纸上它应该起作用,但实际上却没有。当我从列入黑名单的IP之一(例如123.123.123.123)发布信息时,该阻止不会触发。
我的代码有什么问题?
在您问我不能使用“允许”,“拒绝”之前,是的,我使用的是真实IP地址来运行测试。我只是不想发布它们:P
答案 0 :(得分:1)
您需要转义IP地址中的点。
”。匹配任何单个字符
您可以尝试以下代码:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REMOTE_ADDR} ^123\.123\.123\.123$ [OR]
RewriteCond %{REMOTE_ADDR} ^222\.222\.222\.222$ [OR]
RewriteCond %{REMOTE_ADDR} ^111\.111\.111\.111$
RewriteRule .* – [F,L]
</IfModule>
参考:https://httpd.apache.org/docs/2.4/rewrite/intro.html#regexvocab