iis url rewrite - 如何匹配以“?”开头的模式
iis url rewrite - how to match pattern starting with "?"
我正在尝试强制执行 url 重定向(使用 url 重写模块,但由于某种原因它似乎不愿意匹配..)
我的用例如下:
url: http://somesite.domain.com/?test=4
现在,当它匹配 ?test=4 到 http://somesite.domain.com/subsite/?test=5 时,我试图将其重定向
我已经通过匹配 ^\?test=4 的模式(在匹配 url 或条件)
上以多种方式尝试了这个
出于某种原因,它不愿意触发。
\?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 重写模块了,所以我要通过反复试验来进行一些尝试..
任何提示都会很好!
据我所知,url 匹配不会匹配查询字符串。所以你的 url 重写规则将不起作用。
如果你想检查querystring,我建议你可以使用IIS url rewrite querystring condition.
更多细节,您可以参考下面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>
结果:
我正在尝试强制执行 url 重定向(使用 url 重写模块,但由于某种原因它似乎不愿意匹配..)
我的用例如下: url: http://somesite.domain.com/?test=4
现在,当它匹配 ?test=4 到 http://somesite.domain.com/subsite/?test=5 时,我试图将其重定向 我已经通过匹配 ^\?test=4 的模式(在匹配 url 或条件)
上以多种方式尝试了这个出于某种原因,它不愿意触发。
\?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 重写模块了,所以我要通过反复试验来进行一些尝试.. 任何提示都会很好!
据我所知,url 匹配不会匹配查询字符串。所以你的 url 重写规则将不起作用。
如果你想检查querystring,我建议你可以使用IIS url rewrite querystring condition.
更多细节,您可以参考下面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>
结果: