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

时间:2017-11-02 06:47:58

标签: c# asp.net url-rewriting telerik

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

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

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

问题

如何从网址重写器处理的beinng中排除包含Telerik.Web.UI.DialogHandler.aspx的网址?

以下配置用于排除网址但不起作用

<rewrite url="^(.+)?Telerik.Web.UI.DialogHandler\.aspx(\?(.+))?$" to="$1" 
 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=$1&amp;$2" processing="stop" />
    <rewrite url="^~/(.+)?\.aspx$" to="~/Default.aspx?g=$1" processing="stop" /> 
    <rewrite url="^~/(.+)?$" to="~/Default.aspx?g=$1" processing="stop" />
</if>

1 个答案:

答案 0 :(得分:0)

我终于找到了答案。

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

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

将其作为第一个规则放在一起非常重要,这样才能完全消除应用于此URL的任何现有规则的可能性。用于属性的$1可确保将原始URL用作属性的值。