Чтобы исключить обработку определенных папок (/contact/
, /presentation/
, /db/site/
- что-либо в этих папках) по этому правилу, вы можете добавить еще одно условие, например:
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(contact|presentation|db/site)" negate="true" />
</conditions>
<action type="Rewrite" url="default.asp?q={R:1}" appendQueryString="true" />
</rule>
Это хорошо делать через дополнительное условие, потому что легко прочитать / понять, о чем это правило.
Если вы хорошо разбираетесь в regex в целом, то вы можете предпочесть такой подход: переместить такое условие в шаблон соответствия (в итоге вы получите тот же результат, и он будет чуть-чуть быстрее ... но немного сложнее чтения):
<rule name="Imported Rule 2" stopProcessing="true">
<match url="^(?!(?:contact|presentation|db/site)/)(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="default.asp?q={R:1}" appendQueryString="true" />
</rule>