【发布时间】:2016-12-24 13:52:01
【问题描述】:
这里是重写规则的碎片
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://www.example.com/TEST_SITE/{R:1}"
redirectType="Permanent" />
</rule>
</rules>
我的目的是测试将 http 重定向到 https 是否在我的测试站点上有效,但是,这将是一个无限循环,代码为 301(永久移动)
如果我将 url="https://www.example.com/TEST_SITE/{R:1} 更改为 url="{HTTP_HOST}/{R:1}",它将起作用,不再循环。但不是将我重定向到https://www.example.com/TEST_SITE/,而是将我重定向到https://www.example.com/(产品环境)。
有什么想法可以解决这个问题吗?谢谢
【问题讨论】:
-
如果将
url="https://www.example.com/TEST_SITE/{R:1}"更改为url="https://{HTTP_HOST}/TEST_SITE/{R:1}"会发生什么?在 stackoverflow.com/a/14925644/1297898 和 saotn.org/iis-url-rewrite-redirect-http-to-https 上有更多 HTTP 到 HTTPS 重定向示例。有时需要一些摆弄:) -
@Jan Reilink url="https://{HTTP_HOST}/TEST_SITE/{R:1} 我以前试过这个,不行。谢谢你的cmets和链接。我会看看进入它。
-
规则到底是在哪里定义的?在 example.com 级别或 example.com/TEST_SITE 级别。请参阅此博客blogs.msdn.microsoft.com/kaushal/2013/05/22/… 它说-“注意:确保在默认网站下的每个虚拟目录/应用程序中禁用重写规则。由于继承,该规则将导致请求以无限循环结束调用自身重复。”
-
我在一段时间后解决了这个问题。我打印了所有的服务器变量,结果服务器变量 {https} 没有返回任何内容,它返回一个附加变量 {http-x-SSL} 以指示其 SSL 连接。谢谢大家
-
伟大的@uonlyYOLOonce!也许您可以用您的解决方案更新您的问题?我最好的猜测是负载均衡器(“lb”)上有一个激活的 URL 重写和/或从 lb 到网络服务器的流量没有经过 SSL 加密。
标签: asp.net redirect iis url-rewriting