我在IIS中创建了一个重写规则,因为一些俄罗斯垃圾邮件发送者,但规则似乎无法正常工作,因为搜索的两个部分之间存在空间,我想知道如何克服这个问题
<rule name="Russian Referral Spam" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="Windows+2002|Windows+2003|Windows+2004|Windows+2005|Windows+2006|Windows+2007|Windows+2009" />
</conditions>
<action type="Redirect" url="https://stackoverflow.com" redirectType="Permanent" />
</rule>
之前,我从未在Windows和虚假版本之间添加空格:
Windows 2002|Windows 2004...
并且会在使用者中使用Windows的任何人获取并重定向它们。即使使用反斜杠,也要在规则中添加+,否则不会影响俄罗斯垃圾邮件发送者。如何更改上述规则以便搜索&#39; Windows 2002 | Windows 2004 | Windows 2005 | Windows 2006 ...如果它在URL中我可以添加%20
以下是俄罗斯垃圾邮件用户代理的几个真实示例:
Mozilla/7.0 (compatible; MSIE2.00; Windows 2005)
Mozilla/8.0 (compatible; MSIE3.00; Windows 2006)
Mozilla/6.0 (compatible; MSIE7.00; Windows 2008)
Mozilla/4.0 (compatible; MSIE4.00; Windows 2005)
我没有使用Apache而是使用IIS,因此没有mod重写规则。
提前致谢
更新:
在Expert Exchange上,它说尝试Windows \ 2006或Windows \ s2006。将尝试这些,但我在等待垃圾邮件发送者返回获得100%的答案,但我知道在IIS中我可以测试规则,所以我也会尝试这个
答案 0 :(得分:0)
你是对的。对于正则表达式中的空格,您可以使用\
或\s
。你的规则可以是这样的:
<rule name="Russian Referral Spam" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_USER_AGENT}" pattern="Windows\s(2005|2008)" />
</conditions>
<action type="Redirect" url="https://stackoverflow.com" redirectType="Permanent" />
</rule>