IIS URL重写问题

时间:2012-06-15 04:04:16

标签: http iis iis-7 url-rewriting iis-7.5

我的域名指向我托管帐户的根目录。在根目录中,我有一个Web.Config(仅用于url重写)和2个应用程序起始点,即:/ josh和/ sudoktion。

我的网址重写规则是为了做到这一点:如果用户访问www.sudoktion.com,它会转到/ sudoktion,同样如果用户访问josh.sudoktion.com,它会转到/ josh。这非常有效。

<rule name="Rewrite1" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www.sudoktion.com$" />
</conditions>
<action type="Rewrite" url="sudoktion/{R:1}" />
</rule>


<rule name="Rewrite9" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^josh.sudoktion.com$" />
</conditions>
<action type="Rewrite" url="josh/{R:1}" />
</rule>

然而我遇到的问题是,如果用户访问:sudoktion.com而不附加www。从一开始,它将把用户带到root并公开root的内容。我尝试使用pattern =“sudoktion.com $”添加一个新规则并将其重写为sudoktion / 虽然它有效,但它打破了josh.sudoktion.com的路径问题。

如何在没有违反josh.sukoktion.com规则的情况下将sudoktion.com/的重写规则添加到sudoktion /?

1 个答案:

答案 0 :(得分:1)

将以下额外行添加到第一条规则的条件中:

<add input="{HTTP_HOST}" pattern="^sudoktion.com$" />

并使其与这两个rukes中的任何一个相匹配。因此规则的整个XML将是:

<rule name="Rewrite1" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_HOST}" pattern="^sudoktion.com$" />
    <add input="{HTTP_HOST}" pattern="^www.sudoktion.com$" />
  </conditions>
  <action type="Rewrite" url="sudoktion/{R:1}" />
</rule>