IIS重写规则将特定域URL重定向到同一域上的不同URL

时间:2014-03-04 20:17:54

标签: redirect iis-7.5 url-rewrite-module

我只是希望IIS 7.5重写规则将http://www.domain.com/url1重定向到http://www.domain.com/url2(同一个域)。这可以通过以下方式实现:

<rule name="Redirect url" enabled="true" stopProcessing="true">
    <match url="^url1" />
    <action type="Redirect" url="http://www.domain.com/url2"
      appendQueryString="false" redirectType="Permanent" />
</rule>

但是,该网站会监听多个域名,因此上述内容成为所有域名的全局规则。如何将此特定于domain.com?尝试更改匹配URL并添加条件但无法使其工作。感谢。

2 个答案:

答案 0 :(得分:10)

我让它以这种方式工作:

<rule name="Redirect url1" stopProcessing="true">
     <match url="^url1$" />
     <conditions>
          <add input="{HTTP_HOST}" pattern="^(www.)?domain.com$" />
     </conditions>
     <action type="Redirect" url="http://www.domain.com/url2"
      appendQueryString="false" redirectType="Permanent" />
</rule>

答案 1 :(得分:4)

使用此页面上的答案,我能够为自己调整规则。我还添加了查询参数。想在这里发布,以防它帮助某人:

<!-- probably requires custom rewrite module, available through web platform installer -->
<rule name="Redirect oldsite.com" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
    </conditions>
    <action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form"
      appendQueryString="false" redirectType="Permanent" />
</rule>

一些解释:

为了清除一些混淆,这个“url”是之后的部分,是域之后的第一个斜杠,而不是整个网址。我将把它放到这里以便它获得任何URL。

<match url=".*" />

现在,我们将添加一个条件,因为我在这台计算机上有多个网站,因此我想确保此规则仅适用于其中一个网站。我还使用了通配符而不是“(www。)?”因为通配符将捕获任何子域。

<conditions>
    <add input="{HTTP_HOST}" pattern="^.*oldsite\.com$" />
</conditions>

最后一个注意事项是那些想要放入多个查询字符串参数的人。你需要在它们之间转义&符号,因为如果你不这样做它将无效:

<action type="Redirect" url="http://www.newsite.com/page.cfm?userid=123&amp;mode=form"
  appendQueryString="false" redirectType="Permanent" />