Правило перезаписи URL IIS 7 не срабатывает - PullRequest
0 голосов
/ 15 сентября 2010

Я создал правило перезаписи для управления версиями javascript и css в IIS 7. Правило определяется следующим образом:

<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 на соответствие регулярному выражению. URL следует этому шаблону: http://mytestsite.com/public/javascript/Release/SomeDir/jsfile.20100915140743.js

Есть идеи о том, чего мне не хватает в конфигурации?

Ответы [ 3 ]

0 голосов
/ 16 сентября 2010

Входящий URL в конечном итоге стал «public / ...» из-за уровня в IIS, где он был настроен. Если я настроил на более высоком уровне, то у него был полный URL. Я изменил свое регулярное выражение на следующее: (. * Public / (javascript | css) / (Debug | Release) /.+.) \ D +. (Js | css), и это работает.

0 голосов
/ 20 февраля 2013

Попробуйте это

 <?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 голосов
/ 15 сентября 2010

Ваше регулярное выражение начинается с (.+/public/, что означает «один или несколько символов, за которыми следует /public/». Ваш URL, переданный вам IIS, начинается с /public/ или public/, ни один из которых не соответствует вашему регулярному выражению. Вам, вероятно, нужно что-то вроде ((^|.*/)public/.

...