Условия правила перезаписи позволяет вам ограничить применение правила перезаписи, чтобы оно применялось только к тем запросам, где были выполнены условия.
Путем определения Условие, подобное приведенному ниже, позволяет убедиться, что перезапись выполняется только для URL-адресов, которые не соответствуют существующему файлу.
<rule name="rewrite">
<match url="^([^/]+)/([^/]+)?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/review.aspx?c={R:1}&t={R:2}" appendQueryString="false" />
</rule>
Это работает так, что для каждого запроса перед выполнением перезаписи Механизм перезаписи проверяет, выполнено ли заданное условие, а затем пропускает правило перезаписи в случае, если условие не было выполнено.
Условие, которое мы определяем: Запрос не должен ссылаться на фактический файл на диске.
Причина этого заключается в том, что мы хотим, чтобы перезапись применялась только к запросам с виртуальными URL-адресами, такими как /value/value
, а не к запросам для stati c файлов, таких как /css/style.css
.
. что именно означают различные атрибуты условия:
input="{REQUEST_FILENAME}"
сообщает механизму перезаписи, что мы хотим выполнить тест agai Переменная REQUEST_FILENAME
. Значение этой переменной будет примерно таким, как C:/mywebsite/value/value
или C:/mywebsite/css/style.css
. matchType="IsFile"
, говорит движку проверить, соответствует ли указанный выше ввод существующему файлу на диске. negate="true"
сообщает механизму инвертировать результат проверки, чтобы условие выполнялось, когда ввод не не соответствует существующему файлу, а не когда он совпадает.