我尝试过滤所有尝试访问网址中包含path=\
地址的客户端(使用.htaccess),但不包含那些包含_wpnonce=1234567890
的网址的客户端。
逻辑是:阻止除了那些也拥有_wpnonce的所有人 参数。
阻塞,如果它包含子字符串,则不进行测试,如下所示:
RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC,OR]
有没有办法在那里包含我的子串否定?
答案 0 :(得分:0)
文档说该模式是Perl兼容的正则表达式,因此您应该能够使用负前瞻断言:
RewriteCond %{QUERY_STRING} ^(?!.*_wpnonce=1234567890).*(menu|mod|path|tag)\=\.?/? [NC,OR]
虽然将它放在单独的RewriteCond
中可能会更清楚,但前提是您可以使所有[OR]
得以解决。如果不是[OR]
s,你可以写:
RewriteCond %{QUERY_STRING} !_wpnonce=1234567890 [NC]
RewriteCond %{QUERY_STRING} (menu|mod|path|tag)\=\.?/? [NC]