IIS CanonicalHostNameRule用于不同的错误子域

时间:2015-10-29 16:54:23

标签: asp.net iis url-rewriting iis-7 url-redirection

我目前有这个CanonicalHostNameRule 我们有多个顶级域名(.ch和.de),这就是我们不使用IIS的默认CanonicalHostNameRule的原因。

<rule name="RedirectToWWW" enabled="true" stopProcessing="true">
  <match url=".*" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="^(?!www)(\S+)\.(de?|ch)$" />
  </conditions>
  <action type="Redirect" url="https://www.{C:0}/{R:0}" />
</rule>

这适用于

http://supertext.ch

但不适用于

http://holdrio.supertext.ch
http://ww.w.supertext.ch
http://www.mail.supertext.ch

我真的想要将任何子域重定向到www.supertext.ch或.de。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下模式:^(?!www\.supertext\.[de|ch])(\S+)\.(de|ch)$

结果将是例如:

holdrio.supertext.ch - &gt;

  • {C:0}:holdrio.supertext.ch
  • {C:1}:holdrio.supertext
  • {C:2}:ch

holdrio.supertext.de-&GT;

  • {C:0} holdrio.supertext.de
  • {C:1} holdrio.supertext
  • {C:2} de

supertext.ch-&GT;

  • {C:0} supertext.ch
  • {C:1} supertext
  • {C:2} ch
<rule name="RedirectToWWW" enabled="true" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^(?!www\.supertext\.[de|ch])(\S+)\.(de|ch)$" />
    </conditions>
    <action type="Redirect" url="https://www.supertext.{C:2}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
</rule>

注意:www.supertext.ch.supertext.ch未涵盖

我希望这适合你。