如何使用动态路径在IIS中创建重写映射?

如何使用动态路径在IIS中创建重写映射?,iis,url-rewriting,Iis,Url Rewriting,我正试图在IIS中制作一个重写映射,以重写从domain.com/v/{PATH}到domain.com/api/v/{PATH}的任何调用,因为我已经更改了托管逻辑,并且作为一个外部服务无法更改。GET请求正在domain.com/v/{PATH}中向domain.com/api/v/{PATH}发出我必须重写IIS中的任何调用 我创建了以下地图: <rewrite> <rewriteMaps> <rewriteMap name="

我正试图在IIS中制作一个重写映射,以重写从
domain.com/v/{PATH}
domain.com/api/v/{PATH}
的任何调用,因为我已经更改了托管逻辑,并且作为一个外部服务无法更改
。GET
请求正在
domain.com/v/{PATH}
中向
domain.com/api/v/{PATH}发出
我必须重写IIS中的任何调用

我创建了以下地图:

<rewrite>
    <rewriteMaps>
        <rewriteMap name="vmenuAuth">
            <add key="/v/" value="/api/v/" />
        </rewriteMap>
    </rewriteMaps>
    <rules>
        <rule name="Regola di reindirizzamento1 per vmenuAuth">
            <match url=".*" />
            <conditions>
                <add input="{vmenuAuth:{REQUEST_URI}}" pattern="(.+)" />
            </conditions>
            <action type="Redirect" url="{C:1}" appendQueryString="false" />
        </rule>
    </rules>
</rewrite>


但是它只在url有only和/v/时起作用,所以如果我写
domain.com/v/
它会将url重写为
domain.com/api/v/
,但是如果我尝试添加路径
domain.com/v/vhgbrbfhfhtrfbfksz
,它仍然会保持不变,而不会将用户重定向到
domain.com/api/v/vhbrbfhfhtrfbfksz

在这种情况下,似乎没有必要应用URL
重写映射。
只要匹配“/v/”段,我们就会将URL重定向到新路径,对吗?
请参考以下配置

    <rewrite>
      <rules>
        <rule name="abc" stopProcessing="true">
          <match url=".*" />
          <conditions>
                        <add input="{Request_URI}" pattern="/v(.*)" />
          </conditions>
          <action type="Redirect" url="/api/v{C:1}" appendQueryString="false" />
        </rule>
      </rules>
      <rewriteMaps>
        <rewriteMap name="MyMap" defaultValue="">
          <add key="1234" value="HtmlPage1.html"></add>
        </rewriteMap>
      </rewriteMaps>
</rewrite>


如果有什么我可以帮忙的,请随时告诉我。

重写映射用于静态一对一映射。如果您在模式匹配方面需要灵活性,最好编写自己的提供者,您是否只需要为匹配
domain.com/v/{PATH}
或许多不同URL的任何内容执行此操作?如果它被限制为
domain.com/v/{PATH}
,那么您可以使用一个规则,而不是
rewriteMaps
,我唯一改变的是,/v/之后的{PATH}始终是一个Base64字符串,因此我在模式中甚至添加了Base64控件的regex