当从HTTPS协议发出请求时,IIS URL重写规则(Pattern)无法识别{HTTP_HOST}

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当从HTTPS协议发出请求时,IIS URL重写规则(Pattern)无法识别{HTTP_HOST}相关的知识,希望对你有一定的参考价值。

我有域名E.g. 'example.com'我想将所有流量重定向到'https://www.example.com'(因为我的证书只对'www.example.com'有效),当我输入'http://example.com'时它工作正常并将我重定向到'https://www.example.com'预期

问题:当我使用'https://example.com'发出请求时,它不会被规则重定向到'https://www.example.com'。不知道为什么它失败了https?

这是我申请的规则细节。

<rule name="example.com to https://www.example.com" enabled="true" stopProcessing="true">
     <match url="(.*)" />
     <conditions>
          <add input="{HTTP_HOST}" pattern="^example.com$" />
     </conditions>
          <action type="Redirect" url="https://www.example.com/{R:1}" />
</rule>
答案

试试这个 :

           <rule name="Add www" patternSyntax="Wildcard" stopProcessing="true">
                <match url="*" />
                <conditions>
                    <add input="{HTTP_HOST}" pattern="www.example.com" negate="true" />
                </conditions>
                <action type="Redirect" url="http://www.example.com/{R:1}" />
            </rule>

以上是关于当从HTTPS协议发出请求时,IIS URL重写规则(Pattern)无法识别{HTTP_HOST}的主要内容,如果未能解决你的问题,请参考以下文章

IIS URL重写https规则忽略本地主机

CORS 使用带有 ARR 和 URL 重写的 IIS 作为反向代理

IIS url 重写角色,除了一些 url

路由与 URL 重写 (IIS7) 性能

所有站点的“/api/”文件夹的 IIS 反向代理/全局 URL 重写

在 IIS7 中将 URL 从 https:// 重写为 http://