使用 IIS URL 重写重定向文件夹时出现问题

使用 IIS URL 重写重定向文件夹时出现问题

使用 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} 保存的是其中的内容(.*),而不是整个网址,因此它应该可以工作。

相关内容