URL将http重写为https并让我们加密

时间:2017-11-18 13:56:25

标签: iis url-rewriting lets-encrypt url-rewrite-module

我正在尝试在我的IIS上设置URL Rewrite,以便它处理http并让我们加密。我的目标是以下

1)http://example.comhttp://www.example.comhttps://www.example.com的所有流量都应该重定向(301)到https://example.com

2)应保留任何子页面和查询字符串,以便http://www.example.com/whatever/login.aspx?username=blabla成为https://example.com/whatever/login.aspx?username=blabla

3)所有对http://example.com/.well-known/acme-challenge/ *和http://www.example.com/.well-known/acme-challenge/ *的请求(其中“*”可以是任何子页面和查询字符串)不应重定向

就像我尝试过一样,但我无法使其发挥作用。

1 个答案:

答案 0 :(得分:3)

你可以用两条规则来做到这一点。第一个将重定向到https,第二个将更改域。您需要将您的网址.well-known/acme-challenge/添加为"否定"属性

<rule name="CanonicalHostNameRule">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">>
        <add input="{HTTP_HOST}" pattern="^www.example\.com$" />
        <add input="{REQUEST_URI}" pattern="^/.well-known/acme-challenge" negate="true" />
    </conditions>
    <action type="Redirect" url="https://example.com/{R:1}" />
</rule>
<rule name="Redirect to https">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" pattern="off" />
        <add input="{REQUEST_URI}" pattern="^/.well-known/acme-challenge" negate="true" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>