0

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

我的 url 重写规则就是为此而构建的:如果用户访问 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。一开始它会将用户带到根目录并公开根目录的内容。我尝试使用 pattern="sudoktion.com$" 添加新规则并将其重写为 sudoktion/ ,但它会破坏 josh.sudoktion.com 的样式路径问题。

如何将 sudoktion.com/ 的重写规则添加到 sudoktion/ 而不破坏规则 josh.sukoktion.com 到 josh/ ?

4

1 回答 1

1

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

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

并使其与这两个规则中的任何一个匹配。所以规则的整个 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>
于 2012-06-15T21:51:56.467 回答