url rewrite - 仅当目录符合条件时才删除子域

时间:2014-04-07 21:44:13

标签: iis url-rewrite-module

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

示例网址为http://www3.test.com/feed/testing.xml 如果URL中存在目录“feed”,则删除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重定向并使你的测试环境变得混乱。 / p>

1 个答案:

答案 0 :(得分:0)

您无法在HTTP_HOST中匹配Feed,而是需要使用匹配网址。

你必须匹配匹配URL中的/feed/testing.xml,这将产生R:0 匹配你的模式,如果它有www3并采取C:2,它将为您提供没有www3的URL。

<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>