子文件夹路径的IIS重写规则

子文件夹路径的IIS重写规则,iis,url-rewriting,reverse-proxy,Iis,Url Rewriting,Reverse Proxy,我在不同的服务器上托管了几个网站,并且我在前端服务器上使用IIS 10+url重写作为反向代理 重定向如下所示: www.example.com重写到服务器A: siteB.example.com重写到服务器B: siteC.example.com重写到服务器C: 此方案只允许我为所有子域网站管理一个证书 这在具有条件匹配规则的子域上运行良好 现在,我想从一个子目录执行重写规则,将整个站点D映射到该子目录 例如: www.example.com/siteD重写到服务器D: 该站点重定向了

我在不同的服务器上托管了几个网站,并且我在前端服务器上使用IIS 10+url重写作为反向代理

重定向如下所示:

  • www.example.com重写到服务器A:
  • siteB.example.com重写到服务器B:
  • siteC.example.com重写到服务器C:
此方案只允许我为所有子域网站管理一个证书

这在具有条件匹配规则的子域上运行良好

现在,我想从一个子目录执行重写规则,将整个站点D映射到该子目录

例如:

  • www.example.com/siteD重写到服务器D:
该站点重定向了第一页,但外观看起来很奇怪,链接无法正常工作

这是使用条件{C:2}处理该问题的正确方法,还是应该将该模式应用于匹配url

这是我的web.config:

<rule name="www.example.com_site_d" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                        <add input="{HTTP_HOST}" pattern="^www.example.com$" />
                        <add input="{REQUEST_URI}" pattern="^(/siteD/)(.*)$" />
                    </conditions>
<action type="Rewrite" url="http://myinternalsited:80/{C:2}" logRewrittenUrl="true" />


谢谢

据我所知,REQUEST\u URI表示带有querystring的整个URL路径

如果请求URI是
/siteD/test?q=IIS+url+rewrite
,C:2的结果是:
test?q=IIS+url+rewrite

结果:


如果请求的URI是
/siteD?q=IIS+url+rewrite
,则条件将不匹配。

我得出了相同的结论,但siteD与rewrite{C:2}的工作方式不符合预期。与重写不同,{R:1}将从子域方案工作。我发现有一种方法可以通过“重写地图”来实现,这是更好的解决方案吗?