URL Rewrite Module:将HTTP重定向至指定端口90的HTTPS
解决IIS多端口HTTP转HTTPS重定向丢失端口的问题
你的问题根源在于配置里使用的{SERVER_NAME}服务器变量只包含主机名,不会携带请求的端口号,所以当访问http://xxx.xxx.x.xxx:90时,重定向后端口就被丢弃了。
最简单的解决方案是把重定向URL中的{SERVER_NAME}替换成{HTTP_HOST}——这个变量会完整保留请求中的主机名和端口信息(如果请求带了端口的话)。修改后的完整配置如下:
<rewrite> <rules> <rule name="RedirectToHTTPS" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
这样修改后:
- 访问
http://xxx.xxx.x.xxx(默认80端口)会正确重定向到https://xxx.xxx.x.xxx - 访问
http://xxx.xxx.x.xxx:90会自动重定向到https://xxx.xxx.x.xxx:90
如果你的HTTPS端口和对应的HTTP端口不一致(比如HTTP用90,HTTPS用9090),可以添加额外的条件判断来指定目标端口,但根据你的需求,两者端口相同,用{HTTP_HOST}是最简洁可靠的方式。
内容的提问来源于stack exchange,提问作者Anup
相关产品推荐
相关产品推荐

