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>
我一直在努力寻找一些关于如何执行 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>