URL 将 http 重写为 https,让我们加密
URL Rewrite http to https and let's encrypt
我正在尝试在我的 IIS 上设置 URL 重写,以便它处理 http 并让我们加密。我的目标如下
1) 到 http://example.com, http://www.example.com and https://www.example.com should redirect (301) to https://example.com
的所有流量
2) 应保留任何子页面和查询字符串,以便 http://www.example.com/whatever/login.aspx?username=blabla would become https://example.com/whatever/login.aspx?username=blabla
3) 所有对 http://example.com/.well-known/acme-challenge/* and http://www.example.com/.well-known/acme-challenge/* 的请求(其中“*”可以是任何子页面和查询字符串)不应重定向
好像我什么都试过了,但还是不行。
你可以用两条规则来做到这一点。第一个将重定向到 https,第二个将更改域。您需要将 URL .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>
我正在尝试在我的 IIS 上设置 URL 重写,以便它处理 http 并让我们加密。我的目标如下
1) 到 http://example.com, http://www.example.com and https://www.example.com should redirect (301) to https://example.com
的所有流量2) 应保留任何子页面和查询字符串,以便 http://www.example.com/whatever/login.aspx?username=blabla would become https://example.com/whatever/login.aspx?username=blabla
3) 所有对 http://example.com/.well-known/acme-challenge/* and http://www.example.com/.well-known/acme-challenge/* 的请求(其中“*”可以是任何子页面和查询字符串)不应重定向
好像我什么都试过了,但还是不行。
你可以用两条规则来做到这一点。第一个将重定向到 https,第二个将更改域。您需要将 URL .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>