我的域名指向我托管帐户的根目录。在根目录中,我有一个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 /?
答案 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>