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 站点?
使用URL Rewrite无法对域名进行重写,URL Rewrite只能重写域名后面的内容。
可以使用ARR中的反向代理来实现该功能:
以下是配置反向代理的步骤:
如果您尚未安装ARR,则需要先安装它。
安装成功后双击ARR:
有关“具有 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://。