IIS 7.5 HTTP到HTTPS重定向

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS 7.5 HTTP到HTTPS重定向相关的知识,希望对你有一定的参考价值。

我试图让所有HTTP请求重定向到HTTPS。这是我的web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read, Execute, Script" />
    </system.webServer>


    <system.webServer>
       <rewrite>
            <rules>
                <clear />
                <rule name="Redirect to https" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

</configuration>

我在Stackoverflow上的另一篇文章中找到了这个示例:How to force HTTPS using a web.config file

当我保存该文件并尝试使用http访问我的网站时,它不会重定向到https。

我想也许文件被忽略了所以我在web.config中输入了一些不正确的语法然后我得到了500错误 - 这意味着它确实在查看web.config文件。

我误解了上面的配置应该怎么做?我想将所有HTTP请求重定向到HTTPS。

正在重定向到的站点是Tomcat的虚拟目录,如果它有所不同。

答案

假设您已安装URL Rewrite。 Click here for info/installation.

确保在IIS管理器中的URL重定向中配置了以下内容。

匹配网址部分

请求的URL:匹配模式 使用:正则表达式 模式:(。*)

确保选中忽略大小写 条件科

逻辑分组:全部匹配 输入:{HTTPS} 类型:匹配模式 图案:^ OFF $

行动科

操作类型:重定向

动作属性

重定向网址:https:// {HTTP_HOST} / {R:1} 确保'确认'追加查询字符串'已被选中

重定向类型:见其他(303)

另一答案

试试这个:

<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
  <conditions>
    <add input="{HTTPS}" pattern="^OFF$" />
  </conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>

以上是关于IIS 7.5 HTTP到HTTPS重定向的主要内容,如果未能解决你的问题,请参考以下文章

IIS 7.5 HTTP到HTTPS重定向

HTTPS 重定向到一个不起作用的文件夹

IIS 配置Http重定向到Https

尝试将 HTTP 重定向到 HTTPS(C#、IIS),但 HTTPS 在响应标头中转回 HTTP - 重定向循环

IIS 将 www 重定向到非 www 和 http 到 https:是不是可以仅使用一个重定向来完成?

IIS Http 重定向