IIS 重写规则以将 https 重定向到 http 不起作用
IIS rewrite rule to redirect https to http not working
这里有很多关于将 http 重定向到 https 的问题,所以我认为可以很容易地逆转这个过程。然而,我尝试过的一切都没有奏效。
我正在尝试将该规则与我的规范主机名规则相结合(这是第一条规则,位于重写规则的顶部):
<rule name="CanonicalHostName" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="^ON$" />
<add input="{HTTP_HOST}" negate="true" pattern="^www\.example\.com|example-staging\.azurewebsites\.net$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
该网站托管在 Azure 上,DNS 与 CloudFlare 一起使用,如果这有任何区别,我相信它不应该。
知道我做错了什么/可能会阻止规则的 https 到 http 部分起作用吗? (主机名部分工作正常)
您的重定向仍然是 http:
url="http://www.example.com/{R:1}"
您可以按照以下说明操作:Click Here
附加信息:Here
CloudFlare
您无法从 SSL 重定向的原因似乎是因为您使用的是 CloudFlare。 CloudFlare 至少使用灵活的 SSL。这意味着最终用户浏览器显示 SSL 锁定,但您的服务器不需要 SSL。请参阅此处的文档:https://www.cloudflare.com/ssl
没有 CloudFlare,下面的例子应该可以工作。
没有 CloudFlare
以下规则应该有效。如果你愿意,你仍然可以添加你的否定。
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}/{R:1}" />
</rule>
我的工作演示站点的完整重写部分。
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.ashleymedway\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.ashleymedway.com/{R:1}" />
</rule>
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>
这里有很多关于将 http 重定向到 https 的问题,所以我认为可以很容易地逆转这个过程。然而,我尝试过的一切都没有奏效。
我正在尝试将该规则与我的规范主机名规则相结合(这是第一条规则,位于重写规则的顶部):
<rule name="CanonicalHostName" stopProcessing="true">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTPS}" pattern="^ON$" />
<add input="{HTTP_HOST}" negate="true" pattern="^www\.example\.com|example-staging\.azurewebsites\.net$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
该网站托管在 Azure 上,DNS 与 CloudFlare 一起使用,如果这有任何区别,我相信它不应该。
知道我做错了什么/可能会阻止规则的 https 到 http 部分起作用吗? (主机名部分工作正常)
您的重定向仍然是 http:
url="http://www.example.com/{R:1}"
您可以按照以下说明操作:Click Here
附加信息:Here
CloudFlare
您无法从 SSL 重定向的原因似乎是因为您使用的是 CloudFlare。 CloudFlare 至少使用灵活的 SSL。这意味着最终用户浏览器显示 SSL 锁定,但您的服务器不需要 SSL。请参阅此处的文档:https://www.cloudflare.com/ssl
没有 CloudFlare,下面的例子应该可以工作。
没有 CloudFlare
以下规则应该有效。如果你愿意,你仍然可以添加你的否定。
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}/{R:1}" />
</rule>
我的工作演示站点的完整重写部分。
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.ashleymedway\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.ashleymedway.com/{R:1}" />
</rule>
<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Found" />
</rule>
</rules>
</rewrite>