我有两个虚拟机。第一个(VM1)正在运行具有如下URL的Web应用程序:
VM1 /服务台/客户/用户/登录
第二个(VM2)现在应该重定向到该地址不带,更改URL,并且也不允许重定向到根目录/,因为这是另一个Web应用程序。使用此重写规则,这相对容易工作:
<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的情况下进行重写,这不会破坏执行大量嵌套调用的应用程序。
[我发现我可以在现有redirectRest
规则之前使用以下规则(rewriteAll
)来重定向子呼叫(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调用没有遵循301之类的重定向。