URL 将 http 重写为 https 并加密

And*_*ers 4 iis url-rewriting url-rewrite-module lets-encrypt

我正在尝试在我的 IIS 上设置 URL 重写,以便它处理 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/ * 的所有请求(其中“*”可以是任何子页面和查询字符串)不应该被重定向

就像我已经尝试过一切,但我无法让它发挥作用。

Vic*_*yev 8

你可以用两条规则来做到这一点。第一个将重定向到 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>
Run Code Online (Sandbox Code Playgroud)