使用IIS url重写redirect文件夹时出现问题

使用Url重写,我试图redirect/ 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> 

但是这只是redirect到/ foo / foo_bar / *。 我哪里错了?

首先,你指定一个规则来匹配所有的请求(。*),然后你添加一个特定的url的条件。

你应该在比赛中有你的限制标准:

 <match url="^/foo_bar/(.*)" /> 

那么你不再需要这个条件了。 您只能使用条件而不是基于URL的附加条件。

其次{R:1}指向匹配的整个url,所以如果你在/foo_bar/ url中有/foo_bar/那么{R:1}中的内容就解释了为什么它redirect到/ foo / foo_bar /。

使用新的匹配规则,{R:1}包含(.*) ,而不是整个Url,所以它应该可以工作。