如何在URL中添加用户名(即URL重写)?

时间:2012-02-06 11:57:13

标签: asp.net url-rewriting

我想在注册/登录成功后在网址中输入用户名,如此

http://myweb.com/username/255
http://myweb.com/username/settings

我正在使用ASP.Net Rewrite模块,这是我目前使用的重写规则之一,它生成http://myweb.com/home/255

<rule name="HomeRewrite" stopProcessing="true">
    <match url="^home$"/>
    <conditions>
        <add input="{URL}" pattern="\.axd$" negate="true"/>
    </conditions>
    <action type="Rewrite" url="/home.aspx"/>
</rule>

我试图改变自己这样的事情:

<rule name="HomeRewrite" stopProcessing="true">
    <match url="^{R:1}/home$"/>
    <conditions>
        <add input="{URL}" pattern="\.axd$" negate="true"/>
    </conditions>
    <action type="Rewrite" url="/home.aspx"/>
</rule>

但它没有用,我知道我做错了。那么在这方面有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

虽然 ASP.NET Routing 是MVC的一部分,但您也可以使用ASP.Net Forms Applications中的机制(参见http://www.4guysfromrolla.com/articles/051309-1.aspx

E.g。在Global.asax的无效Application_Start(object sender, EventArgs e) 你可以添加这段代码

RouteTable.Routes.Add("Users", new Route("{username}/settings", 
new CustomRouteHandler()));

自定义类CustomRouteHandler实现IRouteHandler将请求发送到您的设置代码(视图)。

您只需要在验证后立即将用户重定向到该网址(并将其保留在那里),这可以通过以下方式完成:在Global.asax的Application_BeginRequest(object sender, EventArgs e)