Iis 7 IIS7 Url重写规则未触发(对于脚本Src)

Iis 7 IIS7 Url重写规则未触发(对于脚本Src),iis-7,url-rewriting,Iis 7,Url Rewriting,我正在解决web应用程序的一个问题,即对非嵌入式资源(例如脚本)进行版本控制以强制重新加载,而不管客户端缓存如何 此解决方案的一部分涉及使用IIS Url Rewrite获取脚本位置(由“src”指定)并将其重写为实际资源。因此,所服务的we b页面将有如下内容: <script type="text/javascript" src="../jsmenu/menu.js?ver=1.1"></script> 我已经安装了重写模块,并使用UI创建了一个规则(该规则随后出现

我正在解决web应用程序的一个问题,即对非嵌入式资源(例如脚本)进行版本控制以强制重新加载,而不管客户端缓存如何

此解决方案的一部分涉及使用IIS Url Rewrite获取脚本位置(由“src”指定)并将其重写为实际资源。因此,所服务的we b页面将有如下内容:

<script type="text/javascript" src="../jsmenu/menu.js?ver=1.1"></script>
我已经安装了重写模块,并使用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”)。如果我查看日志(无论是否使用logrewritenurl=“true”),我都没有看到任何迹象表明它被触发

我错过了什么

如果您可以帮助重写规则,以便保留任何相对路径信息(无论是src=“../../jsmenu/menu_1_1.js”还是src=“../jsmenu/menu_1_1.js”或其他什么,该规则都有效,并且该路径保留在重写的url中。)

问题在于

src="../jsmenu/menu_1_1.js"
实际上已经成为一个

GET /jsmenu/menu_1_1.js
这与模式不符

将模式更改为

url="(.*)menu_([0-9]+)_([0-9]+).js"
两者都匹配,并为我找到了路径前缀

GET /jsmenu/menu_1_1.js
url="(.*)menu_([0-9]+)_([0-9]+).js"