在IIS 10.0中实现HTTP到HTTPS指定端口重定向求助
ASP.NET Web.Config 重定向规则修正方案
你的原规则无效主要有三个问题:
- 默认80端口的HTTP请求中,
{HTTP_HOST}不会携带:80后缀,所以端口匹配条件不生效 - 重定向目标写死为
localhost,不符合你需要的domain域名 - 没有保留原请求的路径(比如
web.aspx),会导致所有请求都跳转到根地址
以下是修正后的完整重写规则,可直接替换到web.config的<rewrite><rules>节点中:
<rule name="Force HTTPS to Port 82" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <!-- 匹配非HTTPS的请求 --> <add input="{HTTPS}" pattern="^OFF$" /> <!-- 可选:如果需要限定仅处理domain域名的请求,可添加此条件 --> <!-- <add input="{HTTP_HOST}" pattern="^domain$" /> --> </conditions> <action type="Redirect" url="https://domain:82/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule>
规则说明:
<match url="(.*)" />:匹配所有请求路径<add input="{HTTPS}" pattern="^OFF$" />:只对HTTP(非HTTPS)请求生效,避免HTTPS请求重复重定向url="https://domain:82/{R:1}":{R:1}会保留原请求的路径(比如web.aspx),确保跳转后仍能访问对应页面appendQueryString="true":保留原请求的查询参数(如果有的话)redirectType="Permanent":返回301永久重定向,利于搜索引擎收录
如果你的服务器上部署了多个域名,需要限定仅对domain生效,可以取消注释条件里的{HTTP_HOST}匹配规则。
内容的提问来源于stack exchange,提问作者Arthur Rees
相关产品推荐
相关产品推荐

