1

我正在尝试将所有 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 的虚拟目录,如果它有所作为的话。

4

2 回答 2

4

假设您安装了 URL 重写。 单击此处获取信息/安装。

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

匹配网址部分

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

确保选中忽略大小写

条件部分

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

行动部分

动作类型:重定向

动作属性

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

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

于 2013-06-07T00:24:04.597 回答
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>
于 2015-03-17T03:28:34.087 回答