[英]IIS URL Rewrite Outbound PostBackUrls
我正在尝试使用IIS URLRewriter将Web应用程序内部和外部写入URL,如下所示:
使用此RegEx进行入站的www.domain.net/SomeSite.aspx
到www.domain.net/SomeSite
:
^([A-Za-z0-9]+)([\\?A-Za-z0-9=&]+)?$
,令我惊讶的是,这实际上也适用于URL,例如www.domain.net/SomeSite.aspx?abc=1
=> www.domain.net/SomeSite?abc=1
使用以下重写操作: {R:1}.aspx?{R:2}
但是现在,对于“出站”,我希望具有相同的效果,因此即使我的Web应用程序内部可能引用〜/ SomeSite.aspx,用户也可以实际看到www.domain.net/SomeSite
。
我为此使用以下RegEx:
^([A-Za-z0-9]+).aspx([\\?A-Za-z0-9=&#]+)?$
并像这样重写URL: /{R:1}{R:2}
一般这种工作,唉,它并不适用于如Response.Redirect
在代码隐藏执行也不认为这是对工作的PostBackUrl
期从asp:Button
秒。
有谁知道如何重写此出站规则,因此无论我如何引用它,它实际上都能捕获每个链接?
谢谢,
丹尼斯
编辑:
自从我认为我并不像我想的那么清楚一些例子:
用户在浏览器中输入www.domain.com/Login
,入站规则捕获并重定向到www.domain.com/Login.aspx
但在地址栏中显示/Login
,此行为很好。
但是,当我单击具有PostBackUrl Login.aspx
的asp:Button时,地址栏将显示Login.aspx
而不是所需的Login
,如何确切地获得此行为?
事实证明,我唯一需要做的就是添加一个入站重定向规则并将这两个规则的stopProcessing
设置为true。 结果如下:
<rules>
<rule name="Clean URL" stopProcessing="true">
<match url="^([A-Za-z0-9]+)([\?A-Za-z0-9#=&]+)?$" />
<action type="Rewrite" url="{R:1}.aspx{R:2}" />
</rule>
<rule name="CleanTest" stopProcessing="true">
<match url="^([a-z0-9/]+).aspx([a-zA-Z0-9\?#=&]+)?$" />
<action type="Redirect" url="{R:1}{R:2}" />
</rule>
</rules>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.