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/
那样的东西。
答
试试这个
<?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
如果URL中是通过任一/公/ ...或公共/ ......这是不是可以更简单?即(^ | /)public: – nickytonline 2010-09-15 16:05:06
nickyt:是的,它会更简单,但URL也可以是“/ blah/blah/blah/public/...” – Gabe 2010-09-15 16:20:09
是的,你接近问题所在。由于IIS配置中的级别,传入的URL最终成为“public/...”。如果我在更高级别配置,那么它有完整的网址。我改变了我的正则表达式为:(。* public /(javascript | css)/(Debug | Release)/.+ \。)\ d + \。(js | css) – 2010-09-16 15:32:52