iis url重写-如何匹配以“?”开头的模式?

问题描述 投票:0回答:1

我正在尝试强制进行URL重定向(使用URL重写模块,但由于某种原因,它似乎不愿意匹配。)

我的用例如下:网址:http://somesite.domain.com/?test=4

现在,当它匹配?test = 4时,我正在尝试将其重定向到http://somesite.domain.com/subsite/?test=5我通过具有^ \?test = 4的匹配模式(在匹配URL或条件上)以多种方式对此进行了尝试。

由于某种原因,它不愿触发。

匹配的regex模式\?test = 4是否存在明显的问题,或者应该起作用吗?

完整的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="^\?test=4" enabled="false" patternSyntax="ECMAScript" stopProcessing="true">
                    <match url="\?test=4" />
                    <action type="Redirect" url="/subsite/?test=5" appendQueryString="true" />
                    <conditions>
                    </conditions>
                </rule>
                <rule name="2" stopProcessing="true">
                    <match url="^$" />
                    <conditions logicalGrouping="MatchAny">
                    </conditions>
                    <action type="Redirect" url="/subsite/?test=5" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration> 

我现在相当熟悉url重写模块,因此我将反复尝试。任何提示都很好!

iis url-rewriting url-rewrite-module
1个回答
0
投票

据我所知,URL匹配将不匹配查询字符串。因此您的url重写规则将不起作用。

如果要检查查询字符串,建议您使用IIS url重写查询字符串条件。

更多详细信息,您可以参考以下url重写规则:

            <rule name="MatchQueryString" stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{QUERY_STRING}" pattern="test=4" />
                </conditions>
                <action type="Redirect" url="/subsite/?test=5" appendQueryString="false" />
            </rule>

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.