IIS RewriteRules

时间:2017-09-15 02:10:28

标签: iis url-rewriting url-redirection

我有一个RewriteRule,其前提是" www"被授予的URL尚未存在。

<rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="www.example.com" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

问题是,我有另一个入站域名(www.example2.com),我不希望这个重写规则适用。我认为以下情况会正常。

<rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
  <match url="*" />
  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="www.example.com" negate="true" />
    <add input="{HTTP_HOST}" pattern="www.example2.com" negate="true" />
  </conditions>
  <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

但它似乎被忽略了。有什么建议?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用此规则执行此操作。它将仅为域example.com添加www,并将忽略所有其他域:

<rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
   <match url="*" />
   <conditions>
     <add input="{HTTP_HOST}" pattern="^example.com$" />
   </conditions>
   <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
 </rule>

答案 1 :(得分:0)

维克多把我带到了那里。谢谢!

    <rule name="Add www" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^example.com$" />
      </conditions>
      <action type="Redirect" url="http://www.example.com/{R:0}" redirectType="Permanent" />
    </rule>

patternSyntax必须是默认的正则表达式值。这意味着必须更改URL模式,并且回溯表达式从零开始。