IIS 7.5 HTTP到HTTPS重定向

时间:2013-05-07 23:56:48

标签: web-config iis-7.5 http-redirect

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

2 个答案:

答案 0 :(得分:4)

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

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

匹配网址部分

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

确保选中忽略案例

条件部分

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

行动部分

操作类型:重定向

动作属性

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

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

答案 1 :(得分: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>