我们希望Web服务器(IIS 10)上的所有站点都强制执行SSL(即,将HTTP重定向到HTTPS)。
我们目前正在每个站点上“要求SSL”,并设置403 error
处理程序以302 redirect
对该特定站点的https地址执行。
这很好。但是,对于每个站点而言,这都是一件痛苦的事情,存在很大的人为错误余地。
理想情况下,我想建立一个永久301 redirect
所有HTTP://*
以HTTPS://*
在IIS中有一种简单的方法吗?
我们希望Web服务器(IIS 10)上的所有站点都强制执行SSL(即,将HTTP重定向到HTTPS)。
我们目前正在每个站点上“要求SSL”,并设置403 error
处理程序以302 redirect
对该特定站点的https地址执行。
这很好。但是,对于每个站点而言,这都是一件痛苦的事情,存在很大的人为错误余地。
理想情况下,我想建立一个永久301 redirect
所有HTTP://*
以HTTPS://*
在IIS中有一种简单的方法吗?
Answers:
IIS7 +的IIS URL重写模块2.1可能是您的朋友。可以从IIS URL Rewrite下载该模块。使用“ URL重写模块”和“ URL重写模块2.0配置参考”介绍了如何使用该模块。
安装模块后,您可以使用IIS管理器创建主机范围的重定向。选择“ URL重写”,“ 添加规则... ”和“ 空白规则”。
名称:
重定向到HTTPS
匹配URL
请求的URL: Matches the Pattern
使用: Wildcards
模式: *
忽略大小写:已选中
条件
逻辑分组: Match Any
条件输入:{HTTPS}
检查输入字符串是否: Matches the Pattern
模式: OFF
忽略大小写:已检查
跨条件的跟踪捕获组:未检查
服务器变量
保留空白。
操作
操作类型: Redirect
重定向URL: https://{HTTP_HOST}{REQUEST_URI}
追加查询字符串:未选中
重定向类型: Permanent (301)
应用规则并运行IISReset(或在IIS管理器中单击“重新启动”)
或者,在安装模块之后,您可以按如下所示修改applicationHost.config文件:
<system.webServer>
<rewrite>
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" ignoreCase="true" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
我的研究表明,这可能是重定向的更好方法:
<rewrite>
<rules>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>