IIS 10中ASP.NET Web应用保留旧URL重定向至HTTPS新端口
实现IIS中指定Web Forms应用的HTTP到HTTPS自定义端口重定向
前置条件
- 已安装IIS URL Rewrite模块
- 已创建「New Site」并绑定HTTPS 9443端口,且WebAppDemo应用已部署到该站点下
- 原「Default Web Site」下的WebAppDemo应用仍保留HTTP 80端口绑定
配置步骤(应用级别URL Rewrite规则)
因为要仅针对WebAppDemo应用生效,我们直接在该应用级别配置重定向规则,而非站点级别:
- 打开IIS管理器,定位到「Default Web Site」下的WebAppDemo应用
- 右侧功能视图中找到并打开「URL Rewrite」
- 点击右侧「添加规则」,选择「空白规则」,点击「确定」
规则配置细节
1. 匹配URL
- 匹配类型:
正则表达式 - 模式:
(.*) - 忽略大小写:勾选
2. 条件(添加2条条件)
点击「添加」按钮,依次配置:
- 第一条条件:
- 输入:
{HTTPS} - 匹配类型:
与模式匹配 - 模式:
^OFF$ - 忽略大小写:勾选
- 输入:
- 第二条条件:
- 输入:
{HTTP_HOST} - 匹配类型:
与模式匹配 - 模式:
^webappdemo\.domain\.com$|^dev-abc-xyz\.myorg\.com$ - 忽略大小写:勾选
(注:多个需要支持的域名用|分隔)
- 输入:
3. 操作
- 操作类型:
重定向 - 重定向URL:
https://{HTTP_HOST}:9443/WebAppDemo/{R:1} - 重定向类型:
永久(301)或临时(302),根据业务需求选择 - 勾选「追加查询字符串」
- 取消勾选「重定向所有请求到Exact目标」
直接修改Web.config配置(可选)
如果更习惯直接编辑配置文件,可打开原WebAppDemo应用根目录下的web.config,在<system.webServer>节点内添加以下规则:
<rewrite> <rules> <rule name="Redirect WebAppDemo to HTTPS 9443" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTPS}" pattern="^OFF$" /> <add input="{HTTP_HOST}" pattern="^webappdemo\.domain\.com$|^dev-abc-xyz\.myorg\.com$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}:9443/WebAppDemo/{R:1}" redirectType="Permanent" appendQueryString="true" /> </rule> </rules> </rewrite>
验证要点
- 访问旧URL
http://webappdemo.domain.com/Default.aspx,应自动跳转到https://webappdemo.domain.com:9443/WebAppDemo/Default.aspx - 访问带路径的URL如
http://dev-abc-xyz.myorg.com/WebAppDemo/Page1.aspx?id=123,应跳转到https://dev-abc-xyz.myorg.com:9443/WebAppDemo/Page1.aspx?id=123 - 确认「Default Web Site」下的其他应用不受该规则影响
内容的提问来源于stack exchange,提问作者Tech with Thiru
相关产品推荐
相关产品推荐

