我一直在寻找一些其他有关如何执行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">
请注意,我实际上是从网址中删除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。我们无法修改来自源的链接,因为这些链接都散布在外部文本文件,数据库表和其他源的网络中,并且一些硬编码规则按原样编写了链接。因此,我在表上唯一的选择是重写应用程序生成和发出的链接。
您可以尝试使用以下规则:
<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>