IIS URL 重写 + 重定向 + 不匹配查询字符串

IIS URL Rewrite + Redirect + does not match the querystring

当 url 包含 www 时,我需要重定向到另一个网站。并且查询字符串与特定值不匹配。无论条件如何,我总是被重定向

 <rewrite>
                <rules>
                    <rule name="Redirect to Landing Page" stopProcessing="true">
                        <match url="(.*)" />
                        <conditions logicalGrouping="MatchAny">
                            <add input="{HTTP_Host}" pattern="www.dev.MyWebpage.com/MCPrivacyNotice" negate="true" />
                        </conditions>
                        <action type="Redirect" url="https://www.myWebPage.com" />
                    </rule>
                </rules>
            </rewrite>

正如你所描述的,所以你需要重定向

  • 域是 www.dev.MyWebpage.com
  • 请求 uri 是 /MCPrivacyNotice

所以我想这可能就是你的答案

    <rule name="Redirect to Landing Page" stopProcessing="true"> 
        <match url="(.*)" /> 
            <conditions logicalGrouping="MatchAll"> 
                <add input="{HTTP_HOST}" pattern="www.dev.MyWebpage.com" /> 
                <add input="{REQUEST_URI}" pattern="/MCPrivacyNotice" negate="true" /> 
            </conditions> 
        <action type="Redirect" url="myWebPage.com" /> 
    </rule>

注意logicalGrouping="MatchAll"匹配所有条件。在您的问题和您的更新中,您使用了 logicalGrouping="MatchAny" 这意味着来自域 www.dev.MyWebpage.com 的每个请求都将被重定向

还有一点,/MCPrivacyNotice{REQUEST_URI}PATH_INFO 而不是 QUERY_STRING 你应该选择正确的模块。检查此细节 https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference

希望对您有所帮助