我有一个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&$2" processing="stop" />
<rewrite url="^~/(.+)?\.aspx$" to="~/Default.aspx?g=$1" processing="stop" />
<rewrite url="^~/(.+)?$" to="~/Default.aspx?g=$1" processing="stop" />
</if>
答案 0 :(得分:0)
我终于找到了答案。
要排除包含字符串Telerik.Web.UI.DialogHandler.aspx
的URL,必须将以下重写规则作为重写URL配置部分中的第一个规则。
<rewrite url="^(/.*(Telerik\.Web\.UI\.DialogHandler\.aspx)(\?.*)?)$"
to="$1" processing="stop" />
将其作为第一个规则放在一起非常重要,这样才能完全消除应用于此URL的任何现有规则的可能性。用于属性的$1
可确保将原始URL用作属性的值。