Iis url重写-仅当目录满足条件时删除子域

Iis url重写-仅当目录满足条件时删除子域,iis,url-rewrite-module,Iis,Url Rewrite Module,在处理从URL中删除www时,我看到了一些类似的问题,但我只需要在某个目录存在时删除它。真正的问题是,我在IIS中的URL重写中运行了“测试”,它工作正常,但由于某些原因,在键入URL时没有响应。我试过切换到“不匹配”时,它会重定向,所以我有点困惑我做错了什么才能让它工作 示例URL是http://www3.test.com/feed/testing.xml 如果URL中存在目录“提要”,则删除www3。我认为这相当简单 <rule name="fix feeds" enabled="tr

在处理从URL中删除www时,我看到了一些类似的问题,但我只需要在某个目录存在时删除它。真正的问题是,我在IIS中的URL重写中运行了“测试”,它工作正常,但由于某些原因,在键入URL时没有响应。我试过切换到“不匹配”时,它会重定向,所以我有点困惑我做错了什么才能让它工作

示例URL是
http://www3.test.com/feed/testing.xml
如果URL中存在目录“提要”,则删除www3。我认为这相当简单

<rule name="fix feeds" enabled="true" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="(www3\.)(.*)(feed/.*)" />
    </conditions>
    <action type="Redirect" url="http://{C:2}{C:3}" appendQueryString="false" redirectType="Permanent" />


我发现的另一个问题是,如果您将其设置为永久重定向301,那么一旦您得到要触发的内容(可能无法按预期工作),浏览器就会缓存301重定向,并将测试环境弄得一团糟。

您无法在HTTP\U主机中匹配提要,而需要使用匹配URL

您必须在匹配URL中匹配/feed/testing.xml,这将在此处生成R:0 匹配你的模式,如果它有www3,并采取C:2,这将给你的URL没有www3

<rule name="fix feeds" enabled="true" stopProcessing="true">
  <match url="^feed/.*" />
    <conditions>
      <add input="{HTTP_HOST}" pattern="(www3\.)(.*)" />
    </conditions>
    <action type="Redirect" url="http://{C:2}/{R:0}" appendQueryString="false" redirectType="Permanent" />
</rule>

太棒了。我想我是从错误的方向看问题。谢谢