重写规则以重写所有 EXCEPT 文件扩展名

Dex*_*ter 3 iis-7 url-rewriting asp-classic

我有一个规则设置来重写进入子目录的所有内容,如下所示:

<rule name="Forms Directory" stopProcessing="true">
    <match url="^forms/(.*)" />
    <action type="Redirect" url="forms.htm" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)

但是,我想稍作更改以允许它访问表单文件夹中的 ASP 文件。所以我想保持相同的规则,但从匹配规则中排除任何 .asp。我尝试了以下操作,但无法按预期运行:

<rule name="Forms Directory" stopProcessing="true">
    <match url="^forms/(.*)[^(.asp)]" />
    <action type="Redirect" url="forms.htm" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)

对此的任何帮助将不胜感激!

Kul*_*gin 5

检查文件扩展名的附加条件解决了这个问题。

<rule name="Forms Directory">
    <match url="^forms/(.*)" />
    <conditions>
        <add input="{REQUEST_FILENAME}" pattern=".+\.asp$" negate="true" />
    </conditions>
    <action type="Rewrite" url="forms.htm" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)