我想要做的是将子域重写到主应用程序,并将指定的子域追加到查询字符串中。例如,“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。
答案 0 :(得分:3)
需要删除节点的url属性的“http://www.main.com/”部分。这就是现在的样子:
<action type="Rewrite" url="default.aspx?SD={C:1}" logRewrittenUrl="false" />
这很有效。