如何排除 URL 被 .Net Intelligentia Rewriter 重写

How to exclude a URL from being rewritten by .Net Intelligentia Rewriter

我有一个 Webforms ASP.Net 应用程序,它已经为 url 重写定义了多个规则,并且它们正在运行。该应用程序使用 Intelligencia URl 重写器,遗憾的是它没有任何 online/offline 文档。

由于这些规则之一,对任何 aspx 文件的请求都被重定向到 default.aspx,这适用于所有情况,除非 aspx 是 Telerik.Web.UI.DialogHandler.aspx.

我尝试在重写器配置中使用以下配置来不重写 url(如果它包含 Telerik.Web.UI.DialogHandler.aspx),但它不起作用。

问题

我如何将包含 Telerik.Web.UI.DialogHandler.aspx 的 url 排除在 Url 重写器处理之外?

下面的配置用于排除 url 但它不起作用

<rewrite url="^(.+)?Telerik.Web.UI.DialogHandler\.aspx(\?(.+))?$" to="" 
 processing="stop" />

现有规则在 url conatins Telerik.Web.UI.DialogHandler.aspx 时导致重写,此规则如下。

<if url="^((?!\.ashx|\.asmx|\.axd|\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js|install|error|auth\.aspx|default\.aspx|popup\.aspx|advanced\.aspx|digest\.aspx|ftb.imagegallery\.aspx|ckfinder).)*$">
    <rewrite url="^~/(.+)?\?(.+)?$" to="~/Default.aspx?g=&amp;" processing="stop" />
    <rewrite url="^~/(.+)?\.aspx$" to="~/Default.aspx?g=" processing="stop" /> 
    <rewrite url="^~/(.+)?$" to="~/Default.aspx?g=" processing="stop" />
</if>

终于找到答案了

要排除包含字符串 Telerik.Web.UI.DialogHandler.aspx 的 URL,必须将以下重写规则作为重写 URL 配置部分中的第一条规则。

 <rewrite url="^(/.*(Telerik\.Web\.UI\.DialogHandler\.aspx)(\?.*)?)$" 
    to="" processing="stop" />

将它作为第一条规则很重要,这样可以完全消除任何现有规则适用于此 URL 的可能性。用于 to 属性的 确保原始 URL 用作 to 属性的值。