IIS URL重写规则 - www / SSL - web.config

时间:2017-07-04 16:01:25

标签: ssl redirect iis iis-7 web-config

我正在尝试在web.config文件的<system.webServer>部分编写一些重写规则。

我的目标是,任何错过www部分的网址都会被重写为www.myurl.com。我相信这实际上应该是301重定向?除此之外,我还想确保我使用SSL与HSTS。

我需要确保不将此规则修复到单个域,例如,它需要适用于foo.combar.com以及我可能选择支持的任何其他域将来(当我开始查看特定国家/地区的域名时可能会有很多)。

这是我到目前为止所做的:

<system.webServer>
<rewrite>
  <rules>
    <rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
    <rule name="Non WWW redirect" enabled="true" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^(www|office365|bdf01)\." negate="true" ignoreCase="true" />
      </conditions>
      <action type="Redirect" url="https://www.{HTTP_HOST}/{R:1}" redirectType="Permanent" />
    </rule>
  </rules>
  <outboundRules>
    <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
      <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
      <conditions>
        <add input="{HTTPS}" pattern="on" ignoreCase="true" />
      </conditions>
      <action type="Rewrite" value="max-age=31536000" />
    </rule>
  </outboundRules>
</rewrite>
</system.webServer>

以上有3条规则: - HTTP到HTTPS - 非万维网到WWW - HSTS

看起来我的HTTP-HTTPS规则工作正常,但这是唯一的。

非www重定向需要能够允许特定的子域。上面的例子不应该添加www。至office365.foo.com或bdf01.foo.com的网址此部分不起作用 - 参见示例1.

我不确定如何最好地测试HSTS,但我使用的是一个名为woorank的网站来查看该网站,并说它未启用HSTS。 不确定这是否有效,但似乎不是

我不确定模式匹配在这些规则中是如何工作的,因此对于可以帮助我更好地理解这部分的资源的链接非常高兴。任何帮助将不胜感激

示例1

当我转到http://foo.com的主页时,我应该被带到https://www.foo.com,而我将被带到https://foo.com。同样,如果我导航到http://office365.foo.com我应该https://office365.foo.com,但我仍然会获得相同的http://地址。

0 个答案:

没有答案