IIS 7 URL重写规则不点火

问题描述:

我已经创建了JavaScript和CSS版本在IIS 7.规则定义一个重写规则如下:IIS 7 URL重写规则不点火

<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

任何想法,我可能会失踪的配置?

由于IIS配置中的级别,传入的URL最终成为“public/...”。如果我在更高级别配置,那么它有完整的网址。我改变了我的正则表达式为:(。* public /(javascript | css)/(Debug | Release)/.+。)\ d +。(js | css)

您的正则表达式从(.+/public/开始,它转换为“一个或多个字符,然后是/public/”。您通过IIS传递给您的URL始于/public/public/,这两者都不符合您的正则表达式。您可能需要像((^|.*/)public/那样的东西。

+0

如果URL中是通过任一/公/ ...或公共/ ......这是不是可以更简单?即(^ | /)public: – nickytonline 2010-09-15 16:05:06

+0

nickyt:是的,它会更简单,但URL也可以是“/ blah/blah/blah/public/...” – Gabe 2010-09-15 16:20:09

+0

是的,你接近问题所在。由于IIS配置中的级别,传入的URL最终成为“public/...”。如果我在更高级别配置,那么它有完整的网址。我改变了我的正则表达式为:(。* public /(javascript | css)/(Debug | Release)/.+ \。)\ d + \。(js | css) – 2010-09-16 15:32:52

试试这个

<?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> 
+0

您应该发布更多类似这样的答案,而不是你的垃圾邮件答案 – 2013-02-21 09:15:06