background: url("/myuri.jpg")
我正在尝试用一些规则重写某些 CSS 文件,以便它用前缀(如)替换 CSS 中的每个链接实例(如background: url("/zeus/myuri.jpg")
)
这些就是规则。
<rule name="ReverseProxyOutboundRule2" preCondition="IsCSS" enabled="true" stopProcessing="false">
<match filterByTags="None" pattern="url\("(.*)"\)" />
<action type="Rewrite" value="url("/zeus{R:1}")" />
<conditions>
<add input="{URL}" pattern="/zeus" />
</conditions>
</rule>
<preCondition name="IsCSS">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/css" />
</preCondition>
然而,只有一url 以这种方式被替换,而其余部分则被忽略。
提前谢谢您。
答案1
这是你的正则表达式模式。
您使用了url\("(.*)"\)
,它在命中第一个 url 后会贪婪地匹配文件中最后一个引号之前的每个字符。这并不明显,因为您的替换只是在匹配的内容上添加前缀,因此看起来只有第一个 url 被触及。
尝试使用惰性量词,即.*?
在捕获表达式中。这将匹配到下一个引号为止的最少字符。