IIS7 Url重写 - 为什么Redirect工作而Rewrite不工作?

时间:2012-03-01 21:44:51

标签: iis-7 url-rewriting

我想要做的是将子域重写到主应用程序,并将指定的子域追加到查询字符串中。例如,“http://a.main.com”应重写为“http://www.main.com/default.aspx?SD=a”。

这是我的重写规则:

<rule name="SubDomain" stopProcessing="true">
  <match url="^$" />
  <conditions trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^([A-Za-z0-9]+)\.main\.com$" />
  </conditions>
  <action type="Rewrite" url="http://www.main.com/default.aspx?SD={C:1}" logRewrittenUrl="false" />
</rule>

当我将浏览器导航到“http://a.main.com”时,我得到了404.但是,当我将规则更改为重定向规则时,它会正确地重定向。它在设置为重定向模式时有效,但在设置为重写模式时无效,这让我非常困惑。发生了什么事?

仅供参考我的HOSTS文件,以便www.main.com和a.main.com都指向127.0.0.1。该网站在IIS7中的唯一绑定将其主机名属性设置为127.0.0.1。

1 个答案:

答案 0 :(得分:3)

需要删除节点的url属性的“http://www.main.com/”部分。这就是现在的样子:

<action type="Rewrite" url="default.aspx?SD={C:1}" logRewrittenUrl="false" />

这很有效。