Если файл существует, вернуть файл, если файл не завершится, переписать - PullRequest
0 голосов
/ 03 августа 2011

Мне нужна помощь, чтобы написать два правила перезаписи 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>

Оба правила работают, если они одни.

Например, если я ставлю только статическое правило, а изображение существует, то оно возвращает изображение.

, если я оставляю толькодинамическое правило, а изображение не существует, то оно создается.

но почему правила не работают вместе?

1 Ответ

5 голосов
/ 03 августа 2011

Ну, я нашел проблему, в основном оба эти правила работают:

        <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>

НО !!!! и это большое но, если вы удалите изображение (для тестирования или чего-то еще) правило каким-то образом кэшируется, и по какой-то странной причине динамическое правило не будет выполнено. единственный способ заставить его выполнить, это перезапустить пул приложений.

...