如何将一个IIS主机上的某些(但不是全部)http请求重定向到另一个IIS主机上的https?

时间:2015-05-07 18:55:21

标签: iis rewrite

我们有以下要求:

  • http :// host1 .domain.com / resource1 / *重定向到 https :// host2 .domain.com / resource1 / *(保留所有内容,包括/ resource1 / *和查询字符串等)

  • 请勿重定向http:// host1 .domain.com / resource2 / *

  • 我们无法使用“申请请求路由”

  • IIS 7.5

我们可以使用重定向或重写,无论哪个有效。这似乎是使用'反向代理设置入站重写规则'选项(使用带有{CACHE_URL}的输入创建条件)接近,但我无法使用“匹配网址”中的模式。 / resource1 / *的部分。重定向似乎只能将资源重定向到同一主机上的另一个资源,而不是在另一个主机上。

我们如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以使用URL Rewrite。只需添加您的应用程序的web.config,如下所示,它添加条件以仅匹配主机名(host1.domain.com),并使用正则表达式匹配resource1并将其传递给操作:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect resource1" stopProcessing="true">
          <match url="resource1/.*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^host1.domain.com$" />
          </conditions>
          <action type="Redirect" url="https://host2.domain.com/{R:0}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>