如何将所有非www URL重定向到https:// www。在IIS?

时间:2015-07-14 12:02:51

标签: asp.net redirect iis url-rewriting url-rewrite-module

我想在IIS 8.5中添加正确的301永久重定向规则。我已经添加了以下规则,但它无效。

 <rule name="Redirect top domains with non-www to www" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern="^(http:\/\/){0,1}(www\.){0,1}([^\.]+)\.([^\.]+)$" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://www.{C:3}.{C:4}" redirectType="Permanent" />
        </rule>

条件

总结一下,每个网址都应该使用HTTPS,并且应该包含&#34; www。&#34;前缀

注意:我在IIS中安装了URL Rewrite Module

任何人都可以帮助我实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

我通过在Web.config文件中添加两个网址重写规则来管理它:

  1. 用于将非www重定向到https://www。{domain} .com /...
  2. 将HTTP重定向到HTTPS

    <rule name="Redirect top domains with non-www to www" stopProcessing="true">
          <match url="(.*)" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern="^([^\.]+)\.([^\.]+)$" />
          </conditions>
          <action type="Redirect" url="https://www.{HTTP_HOST}/{R:1}" redirectType="Permanent" />
          <serverVariables>
            <set name="Redirect" value="false" />
          </serverVariables>
     </rule>
    
    
    <rule name="Force HTTPS" enabled="true" stopProcessing="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
            <add input="{HTTP_HOST}" pattern=".*localhost.*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*stage\..*" negate="true" />
            <add input="{HTTP_HOST}" pattern=".*dev\..*" negate="true" />
            <add input="{HTTPS}" pattern="off" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
     </rule>
    
  3. negate="true"的所有条件都用于排除。因此,包含“localhost”,“stage”和“dev”的所有URL都将从URL重写中排除。如果不需要,您可以删除这些条件。

    详细了解http://www.iis.net/learn/extensions/url-rewrite-module/creating-rewrite-rules-for-the-url-rewrite-module

    上的否定属性