【问题标题】:Rewrite Rule Spaces重写规则空间
【发布时间】:2023-03-21 19:25:03
【问题描述】:

由于一些俄罗斯垃圾邮件发送者,我在 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 并重定向他们。在不影响俄罗斯垃圾邮件发送者之前,即使使用反斜杠也将 + 添加到规则中。如何更改上述规则,使其搜索 '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-rewrite 规则。

提前致谢

更新:

在 Expert Exchange 上显示尝试 Windows\ 2006 或 Windows\s2006。会尝试这些,但我正在等待垃圾邮件发送者返回以获得 100% 的答案,但我知道在 IIS 中我可以测试规则,所以我也会尝试

【问题讨论】:

    标签: iis url-rewriting


    【解决方案1】:

    你是对的。对于正则表达式中的空格,您可以使用\\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>
    

    【讨论】:

      猜你喜欢
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多