Windows Server 2012 IIS8+ 强制 HTTP 跳转 HTTPS 详细教程
一、配置方法(三选一)
方法1:URL重写模块(推荐)
1. 安装模块:
-
-
官方地址下载URL重写模块:https://www.iis.net/downloads/microsoft/url-rewrite
-
选择x64版本安装
-
2. 配置规则:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
方法2:IIS管理器可视化配置
1. 打开IIS管理器 → 选择目标网站
2. 双击 "URL重写" → 点击右侧 "添加规则"
3. 选择 "空白规则" 并配置:
-
-
名称:强制HTTPS
-
匹配URL:(.*)
-
条件:{HTTPS} = OFF
-
操作类型:重定向
-
重定向URL:https://{HTTP_HOST}/{R:1}
-
勾选 "301永久重定向"
-
方法3:命令行一键配置
Add-WebConfigurationProperty -PSPath "IIS:\Sites\Your_Site_Name" -Filter "system.webServer/rewrite/rules" -Name "." -Value @{
name='Force HTTPS';
stopProcessing='true';
match=@{url='(.*)'};
conditions=@{
add=@{
input='{HTTPS}';
pattern='^OFF$'
}
};
action=@{
type='Redirect';
url='https://{HTTP_HOST}/{R:1}';
redirectType='Permanent'
}
}
二、高级场景配置
1. 多域名支持
<rule name="Multi-Domain Redirect">
<match url="(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_HOST}" pattern="^domain1.com$" />
<add input="{HTTP_HOST}" pattern="^www.domain2.com$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
2. 排除特定路径
<rule name="Force HTTPS">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
<!-- 排除API测试接口 -->
<add input="{REQUEST_URI}" pattern="^/api/test" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
3. 启用HSTS(安全增强)
<outboundRules>
<rule name="Add HSTS Header">
<match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
<action type="Rewrite" value="max-age=31536000; includeSubDomains; preload" />
</rule>
</outboundRules>
三、验证与测试
1. 基础测试命令
# 测试重定向响应
curl.exe -I http://yourdomain.com
# 预期结果:
# HTTP/1.1 301 Moved Permanently
# Location: https://yourdomain.com/
2. 自动化测试脚本
$testUrls = @(
"http://yourdomain.com",
"http://yourdomain.com/login",
"http://yourdomain.com/api/test" # 排除路径测试
)
foreach ($url in $testUrls) {
$response = Invoke-WebRequest -Uri $url -Method Head -UseBasicParsing
Write-Host "测试URL: $url"
Write-Host "状态码: $($response.StatusCode)"
Write-Host "重定向目标: $($response.Headers.Location)`n"
}
四、故障排查表
故障现象 |
解决方案 |
---|---|
ERR_TOO_MANY_REDIRECTS |
1. 检查SSL绑定状态 |
404错误 |
1. 确认规则位置在 <rules> 内 |
部分页面不跳转 |
1. 检查页面是否包含混合内容 |
IIS崩溃 |
1. 删除 %windir%\System32\inetsrv\config\applicationHost.config 中的错误规则 |
五、诺昂网络专属支持
如部署过程中遇到任何问题,您可以:
-
📞 联系诺昂网络技术支持团队获得免费远程安装协助
-
🔧 获取7×24小时技术咨询服务
-
💯 享受7天无理由退款保障
提示:选择诺昂网络SSL证书的用户可访问官网(www.nuoang.com)获取:
📚 专属部署文档和视频教程
🔔 证书到期自动提醒服务
🔄 免费重新签发服务
备注:部署完成后建议使用SSL Labs(https://www.ssllabs.com/ssltest/)测试评分。诺昂网络SSL证书通常可获得A+评级,为您提供最优的安全保障。