IIS URL 重写有子调用问题

IIS URL rewriting has trouble with subcalls

我有两个虚拟机。第一个 (VM1) 是 运行 具有 URL 的 Web 应用程序,如下所示:

VM1/servicedesk/customer/user/login

第二个 (VM2) 现在应该重定向到这个地址 而无需 更改 URL 并且也不允许重定向到根 / 因为那是不同的网络应用程序。这个重写规则相对容易工作:

<rule name="rewriteAll" stopProcessing="true">
 <match url=".*" />
 <action type="Rewrite" url="http://VM1/servicedesk/customer/user/login" />
</rule>

它只是基本上重写了从 VM2 到特定 VM1 的所有内容 URL。 我面临的问题是此 Web 应用程序对同一 VM1 上的其他地址有许多 Ajax 调用。 例如 VM1/rest/... 或 VM1/s/.... 我真的试图找到每个异常调用并创建规则 before 这个默认重写。但是由于其中一些是嵌套的并且可以更改,所以这不是一个好方法。所以我需要的基本上是在不改变 URL 的情况下重写,不会破坏执行大量嵌套调用的应用程序。

我发现我可以在现有 rewriteAll 规则之前使用以下规则 (redirectRest) 来重定向子调用 (VM1/rest/..)。

<rule name="redirectRest" stopProcessing="true">
 <match url="/.*" />
 <action type="Redirect" url="http://VM1/{R:0}" />
</rule>
<rule name="rewriteAll" stopProcessing="true">
 <match url=".*" />
 <action type="Rewrite" url="http://VM1/servicedesk/customer/user/login" />
</rule>

所以基本上当我调用 VM1 时第二条规则适用并且我被重写到网络应用程序。托管在那里的应用程序将调用例如VM1/rest 什么触发了第一条规则并将 Ajax 调用重定向到根。但是我发现 Ajax 呼叫没有遵循像 301 这样的重定向。