使用 Url Rewrite,我尝试将 /foo_bar/* 重定向到 /foo/*。我试过这样做:
<rule name="Redirect foo_bar to foo" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{HTTP_URL}" pattern="^/foo_bar/(.*)" />
</conditions>
<action type="Redirect" url="/foo/{R:1}" />
</rule>
但这只是重定向到 /foo/foo_bar/*。我哪里错了?
答案1
首先,您指定一个规则来匹配所有请求(.*),然后为特定的 url 添加一个条件。
你应该在比赛中有你的限制标准:
<match url="^/foo_bar/(.*)" />
那么你就不再需要条件了。你只能使用条件来满足不基于 URL 的附加条件。
其次,{R:1} 引用匹配的整个 url,因此如果/foo_bar/
url 中的内容与 {R:1} 中的内容相同,那就解释了为什么它会重定向到 /foo/foo_bar/。
使用新的匹配规则,{R:1} 保存的是其中的内容(.*)
,而不是整个网址,因此它应该可以工作。