[英]IIS rewrite rule to add querystring to .css and .js references in ASP.net pages?
是否可以将查询字符串附加到CSS和JS文件引用(例如,“ foo.css” =>“ foo.css?v =”,“ goo.js” =>“ goo.js?v =”,其中是“ 1.2.3”)作为入站规则的一部分? 如果是这样,怎么办?
我们需要能够迫使客户在发布后要求CSS和JS文件的最新版本。 重写规则似乎是执行此操作的好地方,但是我对此没有任何文档或留言板帖子。
谢谢!
我认为您需要一个出站规则,以便在版本号更改时缓存请求一个新文件。
我使用以下IIS重写规则来执行此操作。 您需要做的就是在进行更新时更改版本号。 如果您有任何构建自动化功能,则可以在那里进行自动化。
<rewrite>
<rules>
<rule name="JS versioning" stopProcessing="true">
<match url="(.*).js" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" />
<add input="{QUERY_STRING}" pattern="version=3911" negate="true" />
</conditions>
<action type="Redirect" url="{R:1}.js?version=3911" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
本质上,任何对以.js结尾的url的请求都将被拦截并重定向到相同的url,但带有附加了版本号的querystring。 需要一个后续条件来忽略已经具有查询字符串的url,否则它将进入无限重写循环。
您也想对CSS文件进行版本控制时,可以将匹配URL更新为同时匹配js和CSS的正则表达式,或者创建一个单独的规则,该规则执行相同的操作,但目标是CSS文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.