简体   繁体   English

正则表达式的Asp.net URL重写规则

[英]Asp.net URL Rewrite Rule with Regex

I have rewrite rules on web.config file. 我对web.config文件有重写规则。

 <rewrite url="~/Login/(.+)$" to="~/Login.aspx?return=$1"/>
 <rewrite url="~/(.+)-xxx-(.+)$" to="~/Post.aspx?ost_name=$1&amp;post_id=$2"/>

First one for redirect url after login. 登录后第一个用于重定向URL。 Second one for posts. 第二个职位。

If users try login or click comment on post page they will go to login page with redirect url. 如果用户尝试登录或在帖子页面上单击评论,他们将转到带有重定向URL的登录页面。

 protected void lnkLogin_Click(object sender, EventArgs e)
    {
        Session["GoBackUrl"] = Request.RawUrl.ToString().Replace("/", "$");
         base.Response.Redirect("~/Login/" + Session["GoBackUrl"].ToString());
    }

For example 例如

domain.com/Login/$post_name-xxx-post_id

After login they will turn back to post page. 登录后,他们将返回到帖子页面。

But with this rules they are not going login page. 但是使用此规则,他们不会进入登录页面。 Url is changing as 网址正在更改为

 domain.com/Login/$post_name-xxx-post_id

but user stays same page. 但用户停留在同一页面上。 How can I solve this ? 我该如何解决?

I found this example from Devrim Altinkurt's (lang:Tr) page and wrote him. 我从Devrim Altinkurt的 (lang:Tr)页面找到了这个示例,并写了他。 He helped me. 他帮了我。

Solution: "processing="stop" 解决方案: “处理=“停止”

<rewrite url="~/Login/(.+)$" to="~/Login.aspx?return=$1" "processing="stop/>
 <rewrite url="~/(.+)-xxx-(.+)$" to="~/Post.aspx?post_name=$1&amp;post_id=$2"/>

When you don't write. 当你不写的时候。 Application looks all rules and firing last match If you got same Url's you should use this. 应用程序会查找所有规则并触发最后一个匹配项。如果您使用相同的网址,则应使用此网址。 One more detail : rule ranks are important. 更详细一点:规则等级很重要。

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

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