IIS 出站规则 URL 锚标记链接的重写方案

IIS Outbound Rules URL Rewrite Scheme for Anchor Tag Links

我一直在努力寻找一些关于如何执行 URL 重写的额外信息,其中预期的输出是删除/替换 url.

的部分内容

例如,我想确保我所有的锚标签的 href 值都会被修改。

<a class="button" href="https://www.oldgoogle.com" target="_blank">
<a class="button" href="https://www.oldgoogle.com/links" target="_blank">
<a class="button" href="https://www.oldgoogle.com/links/category?dosearch=true" target="_blank">
<a class="button" href="https://oldgoogle.com/nowww" target="_blank">

这样href值就变成这样:

<a class="button" href="https://newgoogle.com" target="_blank">
<a class="button" href="https://newoogle.com/links" target="_blank">
<a class="button" href="https://newgoogle.com/links/category?dosearch=true" target="_blank">
<a class="button" href="https://newgoogle.com/nowww" target="_blank">

请注意,我实际上是 从 url 中删除 www 并将 oldgoogle 替换为 newgoogle.

这是我目前尝试过的方法:

<rewrite>
  <outboundRules>
    <remove name="Strip WWW from Anchor Tags" />
    <rule name="Strip WWW from Anchor Tags" preCondition="IsHTML">
      <match filterByTags="A" pattern="^http(s)://www.oldgoogle.com/(.*)" />
      <conditions />
      <action type="Rewrite" value="https://newgoogle.com/{R:1}" />
    </rule>
  </outboundRules>
</rewrite>

感谢您分享解决此问题的任何信息。

P.S。我们无法修改来自源的链接,因为这些都散落在外部文本文件、数据库 table 和其他来源的网络中,一些硬编码规则按原样编写链接。所以我在 table 上唯一的选择是重写应用程序生成和发出的链接。

您可以尝试使用以下规则:

<outboundRules>
              <rule name="rule1" preCondition="ResponseIsHtml1" stopProcessing="true">
                <match filterByTags="A" pattern="http(s)://(www.)?oldgoogle.com(.*)" />
                <action type="Rewrite" value="https://newgoogle.com{R:3}" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>