IIS 7.5 HTTP 到 HTTPS 重定向

Posted

技术标签:

【中文标题】IIS 7.5 HTTP 到 HTTPS 重定向【英文标题】:IIS 7.5 HTTP to HTTPS redirect 【发布时间】:2013-05-02 02:00:24 【问题描述】:

我正在尝试将所有 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_HOSTREQUEST_URI" redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>

</configuration>

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

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

我认为该文件可能被忽略了,所以我在 web.config 中输入了一些不正确的语法,然后我收到了 500 错误——这意味着它确实在查看 web.config 文件。

我是否误解了上述配置应该做什么?我想将所有 HTTP 请求重定向到 HTTPS。

被重定向到的站点是 Tomcat 的虚拟目录(如果有影响的话)。

【问题讨论】:

【参考方案1】:

试试这个:

<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>

【讨论】:

【参考方案2】:

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

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

匹配网址部分

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

确保选中忽略大小写条件部分

逻辑分组:匹配所有 输入:HTTPS 类型:匹配模式 模式:^OFF$

动作部分

动作类型:重定向

动作属性

重定向网址:https://HTTP_HOST/R:1 确保选中“附加查询字符串”

重定向类型:查看其他 (303)

【讨论】:

据我所知,我正在为其执行此操作的软件不能进行 URL 重写。 Apache-Tomcat 不提供用于安装 URL 重写的 ActiveX 文件。 如果涉及第三方软件,必须在此线程的第一篇文章中提及,以及任何其他重要信息。上面的说明会将 HTTP 重定向到 HTTPS。

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

IIS 7.5 HTTP到HTTPS重定向

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

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

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

IIS Http 重定向

IIS 配置Http重定向到Https