重写 URL 以指向 IIS 中的另一个站点

Rewrite URL to point to another site in IIS

我在 IIS 8.5 中设置了两个站点,为了简单起见,我们将其称为 测试 1测试 2

测试 1 可以在 test1.mydomain.com 访问,测试 2 可以在 test2.mydomain.com 访问,但我希望它也可以在 test1.mydomain.com/app.

上使用

这不应该是重定向,而是重写 - 当用户查看 Test 2 站点时,他们应该看到 URL test1.mydomain.com/app 在他们的浏览器地址栏中,所有路径都应该使用它作为基础 url,例如test1.mydomain.com/app/page1

我希望使用 URL 重写模块这会很简单,但似乎无法重写域,只能重写路径:

    <rule name="test2" stopProcessing="true">
        <match url="^app(/.*)?$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="Rewrite" url="test2.mydomain.com{R:1}" appendQueryString="false" />
    </rule>

将此添加到 测试 1 的 web.config 会导致 404 错误,我认为是因为它将 URL 重写为 test1.mydomain.com/test2.mydomain.com

如何重写 URL 以指向测试 2 站点?

无法使用URLRewrite重写域名,URLRewrite只能重写域名后面的内容

可以使用ARR中的反向代理来实现这个功能:

配置反向代理的步骤如下:

  1. 如果没有安装ARR,需要先安装

  2. 安装成功后双击ARR:

  1. 设置反向代理:

  1. 启用反向代理:

  1. 最后,在您的站点中配置一个 URL 重写:

有关“使用 URL Rewrite v2 和应用程序请求路由的反向代理”的更多信息,您可以参考此link

更新:

你可以打开FRT看看重写的URL是什么

这是一个演示:

你可以尝试使用这个规则:

<rule name="test2" stopProcessing="true">
        <match url="^app(/.*)?$" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="Rewrite" url="http://test2.mydomain.com{R:1}" appendQueryString="false" />
    </rule>

使用此操作:

<action type="Rewrite" url="http://test2.mydomain.com{R:1}" appendQueryString="false" />

别忘了加上http://.