Если файл существует, вернуть файл, если файл не завершится, переписать
Мне нужна помощь, чтобы написать два правила перезаписи 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&image={R:3}&w={R:1}&h={R:2}" />
</rule>
Оба правила работают, если они одни.
например, если я поставил только статическое правило, и изображение существует, то оно возвращает изображение.
если я оставляю только динамическое правило, а изображение не существует, то оно создается.
но почему правила не работают вместе?
1 ответ
Ну, я нашел проблему, в основном оба эти правила работают:
<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&image={R:3}&w={R:1}&h={R:2}" />
</rule>
НО!!!! и это большое, но, если вы удалите изображение (для целей тестирования или чего-то еще), правило каким-то образом будет кэшировано, и по какой-то странной причине динамическое правило не будет выполнено. единственный способ заставить его выполнить, это перезапустить пул приложений.