繁体   English   中英

IIS重写规则,以将查询字符串添加到ASP.net页中的.css和.js引用?

[英]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文件。

我认为您不需要重写规则,而无需HTTP过滤器。 它需要动态地解析并重写HTTP流上的请求。

MSDN文档

奥莱利样本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM