我在IIS 7中为javascript和css版本控制创建了一个重写规则。规则定义如下:
<rewrite>
<rules>
<rule name="Js/Css Cache Rewrite" stopProcessing="true">
<match url="(.+/public/(javascript|css)/(Debug|Release)/.+\.)\d+\.(js|css)" />
<action type="Rewrite" url="{R:1}{R:4}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
当我手动测试与正则表达式匹配的url时。网址遵循以下模式: http://mytestsite.com/public/javascript/Release/SomeDir/jsfile.20100915140743.js
关于配置可能缺少什么的任何想法?
答案 0 :(得分:0)
您的正则表达式以(.+/public/
开头,转换为“一个或多个字符,后跟/public/
”。 IIS传递给您的URL始于/public/
或public/
,两者都不匹配您的正则表达式。你可能需要像((^|.*/)public/
这样的东西。
答案 1 :(得分:0)
由于IIS配置的级别,传入的URL最终成为“public / ...”。如果我在更高级别配置,那么它有完整的URL。我把我的正则表达式更改为:(。* public /(javascript | css)/(Debug | Release)/.+。)\ d +。(js | css)并且它可以工作。
答案 2 :(得分:0)
试试这个
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="permalink">
<match url="article/(\D+)(\/)*$" />
<action type="Rewrite" url="http://mywebsite.com/article.aspx?id={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>