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

Alf*_*and 0 iis url-rewriting url-rewrite-module iis-8.5

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

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

这不应该是重定向,而是重写 - 当用户查看测试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>
Run Code Online (Sandbox Code Playgroud)

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

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

Din*_*eng 9

使用URL Rewrite无法对域名进行重写,URL Rewrite只能重写域名后面的内容。

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

在此输入图像描述

以下是配置反向代理的步骤:

  1. 如果您尚未安装ARR,则需要先安装它。

  2. 安装成功后双击ARR:

在此输入图像描述

  1. 设置反向代理:

在此输入图像描述

  1. 启用反向代理:

在此输入图像描述

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

在此输入图像描述

有关“具有 URL 重写 v2 和应用程序请求路由的反向代理”的更多信息,您可以参考此链接

更新:

您可以启用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>
Run Code Online (Sandbox Code Playgroud)

使用此操作:

<action type="Rewrite" url="http://test2.mydomain.com{R:1}" appendQueryString="false" />
Run Code Online (Sandbox Code Playgroud)

不要忘记添加 http://。