IIS URL重写遇到子调用问题

问题描述 投票:0回答:1

我有两个虚拟机。第一个(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的情况下进行重写,这不会破坏执行大量嵌套调用的应用程序。

iis url-rewriting url-rewrite-module
1个回答
0
投票

[我发现我可以在现有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之类的重定向。

© www.soinside.com 2019 - 2024. All rights reserved.