繁体   English   中英

IIS URL重写出站PostBackUrls

[英]IIS URL Rewrite Outbound PostBackUrls

我正在尝试使用IIS URLRewriter将Web应用程序内部和外部写入URL,如下所示:

使用此RegEx进行入站的www.domain.net/SomeSite.aspxwww.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#=&amp;]+)?$" />
            <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\?#=&amp;]+)?$" />
            <action type="Redirect" url="{R:1}{R:2}" />
        </rule>
</rules>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM