2011-08-03 62 views
0

我需要一些幫助來編寫兩個URL重寫規則在IIS7中,我已經嘗試了過去3小時沒有成功。如果文件存在,返回文件,如果文件沒有退出,重寫

基本上,我有以下兩條規則:

<rule name="Resize Images - Game Thumbnails - Static" stopProcessing="true"> 
    <match url="^images/c/games/(.+)x(.+)/(.+)$" /> 
    <conditions logicalGrouping="MatchAny"> 
     <add input="\mycms\games\images\thumbs\220x150\{R:3}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="/mycms/games/images/thumbs/{R:1}x{R:2}/{R:3}" /> 
</rule> 
<rule name="Resize Images - Game Thumbnails - Dynamic" stopProcessing="true"> 
    <match url="^images/c/games/(.+)x(.+)/(.+)$" /> 
    <conditions logicalGrouping="MatchAny"> 
     <add input="\mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="/controls/makeThumb.aspx?folder=games&amp;image={R:3}&amp;w={R:1}&amp;h={R:2}" /> 
</rule> 

的規則都工作,如果他們都不在話下。

例如,如果我只把靜態規則,和圖像存在, 然後它返回的圖像。

如果我只留下動態規則,並且圖像不存在,則 就會被創建。

但爲什麼規則不一起工作?

回答

4

嗯,我發現了問題, basicly這兩條規則的工作:

 <rule name="Resize Images - Game Thumbnails - Static" stopProcessing="true"> 
      <match url="^images/c/games/(.+)x(.+)/(.+)$" /> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="{APPL_PHYSICAL_PATH}mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" /> 
      </conditions> 
      <action type="Rewrite" url="/mycms/games/images/thumbs/{R:1}x{R:2}/{R:3}" /> 
     </rule> 
     <rule name="Resize Images - Game Thumbnails - Dynamic" stopProcessing="true"> 
      <match url="^images/c/games/(.+)x(.+)/(.+)$" /> 
      <conditions logicalGrouping="MatchAny"> 
       <add input="\mycms\games\images\thumbs\{R:1}x{R:2}\{R:3}" matchType="IsFile" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="/controls/makeThumb.aspx?folder=games&amp;image={R:3}&amp;w={R:1}&amp;h={R:2}" /> 
     </rule> 

但!!!!這是一個很大的,但如果你刪除圖像(用於測試目的或任何其他) 該規則以某種方式被緩存,並且出於某些混亂的原因,動態規則將不會執行。 強制執行它的唯一方法是回收應用程序池。

+0

我不確定您是否使用外部文件進行重寫規則,但我知道當情況發生變化時,該方案不會重新加載規則:http://stackoverflow.com/questions/3767864/iis7- urlrewrite-module-rules-in-external-xml-file –

+0

感謝您提及{APPL_PHYSICAL_PATH}(我需要解決我正在處理的問題)。您提到的已刪除映像的問題是由緩存導致的,無論是由IIS還是由URLRewrite本身(不確定)。如果繼續點擊該URL,文件的存在將保留在緩存中。但是,如果您在60秒內未請求URL,它將再次檢查該文件並意識到它不存在(再)。 –

相關問題