URL重写条件可以比较两个服务器variables吗?
我想比较两个服务器variables作为URL重写条件的一部分。 但首先,一些背景… 在IIS中,如果您请求http://www.example.com/foo并且foo是一个目录,则IIS会将302“Object moved”redirect到http://www.example.com/foo/作为“礼貌redirect“( 来源 )。 如果使用IIS + ARR作为带有SSL卸载的反向代理,则后端IIS节点接收的请求通过http而不是https。 结合这两个行为,以及IIS的礼貌redirect丢弃SSL。 礼貌redirect使用与IIS收到的请求( 源 )相同的scheme,在这种情况下http而不是https。 我想创build一个出站重写规则,将传入的URL与传出的位置标题进行比较,并在此情况下将其从http重写为https: 响应是redirect: {RESPONSE_STATUS}是302 传入的请求是通过SSL: {HTTPS}是“开” 传入的URL不会以斜杠结尾。 传出的位置标题以斜杠结尾。 以上都是在前提下处理的。 棘手的部分是最后一点: 传出位置标题的path与附加斜线的传入url相同。 以下是我到目前为止的代码。 前提条件和头重写都工作正常。 但是,该条件导致500错误(URL重写模块错误),大概是因为我在模式中使用{REQUEST_URI} 。 我已经尝试将条件分成两个并使用捕获组,但是这也不起作用。 有任何想法吗? <rule name="Fix: Courtesy Redirect + SSL Offloading = SSL dropped" preCondition="Courtesy Redirect Drops SSL" enabled="true"> <match serverVariable="RESPONSE_LOCATION" pattern="^http://(.+/)$" /> <conditions> <add input="{RESPONSE_LOCATION}" pattern="{REQUEST_URI}/" /> </conditions> <action […]