首页 > 解决方案 > 带有输入参数的 IIS URL 重定向

问题描述

无法实现我的第一个 IIS 重定向。

我有一个网址:

domain.com/Q7WebServer/Q7WebSrv.exe/datasnap/rest

它可以接受由 / 字符分隔的一系列输入参数:

domain.com/Q7WebServer/Q7WebSrv.exe/datasnap/rest/GetDateTime
domain.com/Q7WebServer/Q7WebSrv.exe/datasnap/rest/GetUsageData

等等等等

我想重定向到一个新模块(实际上是一个 DLL):

domain.com/Q7WebServer/Q7WebSrvISAPI.dll/datasnap/rest

我首先将重定向添加到文件本身(Q7WebSrv.exe),它本身就可以正常工作。只有当我添加变量时,它才会开始以我不理解的方式表现。例如,如果我将重定向设置为 Q7WebSrvISAPI.dll$V$Q(使用 EXACT 标志)并请求

domain.com/Q7WebServer/Q7WebSrv.exe

我回来

domain.com/Q7WebServer/Q7WebSrvISAPI.dll/Q7WebServer/Q7WebSrv.exe

无论我使用哪个 $ 变量,它仍在尝试将原始 URL 的一部分附加到重定向。我什至不想了解附加 / 输入参数时会发生什么。

我需要进行 URL 重写吗?那是一整罐我还不想打开的蠕虫。

标签: redirectiis-7.5

解决方案


你可以试试这个规则:

<rule name="test" stopProcessing="true"> 
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_HOST}" pattern="www.domian.com" />
    <add input="{REQUEST_URI}" pattern="/Q7WebServer/Q7WebSrv.exe/datasnap/rest/(.*)" /> 
  </conditions> 
<action type="Redirect" url="http://ww.domain.com/Q7WebServer/Q7WebSrvISAPI.dll/datasnap/rest/{C:1}" />
</rule>

推荐阅读