请求编写IIS Rewrite规则移除URL中的版本号片段
解决IIS中移除静态资源文件名版本号的URL重写规则
我完全懂你的痛点——用查询字符串控制缓存确实在部分浏览器里有兼容性问题,把版本号嵌进文件名再通过重写剥离是更可靠的方案。针对你给出的URL格式,我来提供对应的IIS Rewrite规则:
具体规则配置
你需要在站点的web.config文件中添加以下URL重写规则,确保已经安装了IIS URL Rewrite模块:
<system.webServer> <rewrite> <rules> <rule name="Remove Static Resource Version" stopProcessing="true"> <match url="^(.+)\.(\d+\.\d+\.\d+\.\d+)\.(js|css)$" /> <action type="Rewrite" url="{R:1}.{R:3}" /> </rule> </rules> </rewrite> </system.webServer>
规则说明
- 匹配模式:
^(.+)\.(\d+\.\d+\.\d+\.\d+)\.(js|css)${R:1}捕获版本号之前的文件名部分(比如SiteScripts/Test_js){R:2}捕获中间的版本号(比如2018.2.11.6645,这个分组我们不会用到){R:3}捕获文件扩展名(js或css)
- 重写动作:将URL替换为
{R:1}.{R:3},也就是去掉中间的版本号部分
验证示例
- 原URL:
http://Site/SiteScripts/Test_js.2018.2.11.6645.js→ 重写后:http://Site/SiteScripts/Test_js.js - 原URL:
http://Site/Css/SiteCss.2018.2.11.6645.css→ 重写后:http://Site/Css/SiteCss.css
扩展提示
如果你的版本号格式有变化(比如不是固定四位数字段),可以把匹配模式里的版本部分改成\d+(\.\d+)+,这样能匹配任意多段的数字版本号(比如1.0、2.3.5等),修改后的匹配URL为:
^(.+)\.(\d+(\.\d+)+)\.(js|css)$
内容的提问来源于stack exchange,提问作者Mych
相关产品推荐
相关产品推荐

