我正在解决一个 Web 应用程序问题,我们使用版本控制非嵌入式资源(例如脚本)来强制重新加载,尽管有任何客户端缓存。
该解决方案的一部分涉及使用 IIS Url Rewrite 获取脚本位置(由“src”指定)并将其重写为实际资源。因此,所服务的 we b 页面将具有以下内容:
<script type="text/javascript" src="../jsmenu/menu.js?ver=1.1"></script>
或者
<script type="text/javascript" src="../jsmenu/menu-1_1.js"></script>
并且重写规则将接受相应的客户端请求并将其转换为以下请求:
"../jsmenu/menu.js"
我已经安装了 Rewrite 模块,并使用 UI 创建了一个规则(然后出现在 web.config 中),完成了许多 IISreset,但似乎什么也没发生。
这是规则:
<system.webServer>
<rewrite>
<rules>
<rule name="VersionScripts">
<match url="../jsmenu/menu_([0-9]+)_([0-9]+).js" />
<action type="Rewrite" url="../jsmenu/menu.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
url 不会被重写,脚本也不会加载(因为它实际上并不称为“menu_1_1.js”)。如果我查看日志(有和没有 logRewrittenUrl = "true" ),我看不到任何表明它被触发的东西。
我错过了什么?
如果您可以帮助重写规则以保留任何相对路径信息,则可以加分(该规则适用于 src="../../jsmenu/menu_1_1.js" 或 src="../jsmenu/menu_1_1.js " 或其他任何内容,并且该路径保留在重写的 url 中)。