我正在尝试使用 IIS URLRewriter 在我的 Web 应用程序中编写入站和出站 URL,如下所示:
www.domain.net/SomeSite.aspx
www.domain.net/SomeSite
将此 RegEx 用于入站:
^([A-Za-z0-9]+)([\?A-Za-z0-9=&]+)?$
,令我惊讶的是,这确实有效,也适用于www.domain.net/SomeSite.aspx?abc=1
=>之类的 URL,www.domain.net/SomeSite?abc=1
使用此重写操作:{R:1}.aspx?{R:2}
但是现在,对于出站,我希望具有相同的效果,以便用户实际看到www.domain.net/SomeSite
,即使我的 web 应用程序可能在内部引用 ~/SomeSite.aspx。
我为此使用以下正则表达式:
^([A-Za-z0-9]+).aspx([\?A-Za-z0-9=&#]+)?$
并像这样重写 URL:/{R:1}{R:2}
唉,一般来说,它不能Response.Redirect
在 CodeBehind 中执行,也不能用于PostBackUrl
s from asp:Button
s。
有谁知道如何重写此出站规则,以便它实际上捕获每个链接,而不管我如何引用它?
谢谢,
丹尼斯
编辑:
一些例子,因为我想我并不像我想的那么清楚:
用户www.domain.com/Login
在浏览器中输入,Inbound-Rule 捕获并重定向到www.domain.com/Login.aspx
尚未显示/Login
在地址栏中,这种行为很好。
但是,当我单击带有 PostBackUrlLogin.aspx
的 asp:Button 时,地址栏将显示Login.aspx
而不是所需的Login
,如何获得这种行为?