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