IIS 7 Url 重写仅适用于端口 80

IIS 7 Url 重写仅适用于端口 80

我有一个网站,任何来自端口 80 的流量都需要重定向到端口 443 (https)。根据本文,这很简单,而且有效。但我的问题是,这是一个负载平衡环境。我想在防火墙后面打开一个非标准端口,这样当我的服务器脱离负载平衡器时,我就可以推送我的代码并使用http://我的ip:XXXX通过非标准端口上的 http,无需强制使用 https。

本文使用的规则是这样的

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

我该如何调整它以便它只重定向到端口 80(或者不重定向到我的测试端口)?

答案1

我刚刚使用 SERVER_PORT 变量上的否定条件关闭了特定端口的相同规则(文档). 对于端口 XXXX:

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
      <add input="{SERVER_PORT}" pattern="XXXX" negate="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

答案2

无论您在哪个端口上访问它,web.config 文件都是以站点为中心的(或者更确切地说,以目录为中心,以它所在的目录为中心)。

诀窍(我从未在端口方面这样做过)是将 URL 匹配规则更改为匹配以 结尾的 URL 请求:80。我最初的猜测是将其更改为(.*:80)可能会有效。

相关内容