0

我要做的基本上是能够输入网址,它会根据那里的用户mysite/username名将它们重定向到那里的页面( )。mysite/Profle/Default.aspx?username=username

4

1 回答 1

0

我认为这可能需要的不仅仅是 URL 重写。

由于 and 之间没有真正的区别(可以通过 urlrewrite 正则表达式区分)mysite/usernamemysite/directory您可能需要做更多类似的事情。

在您的 global.asax 中,覆盖 BeginRequest 函数。检查请求路径是否与已知用户名匹配。如果是,请重定向。如果没有,让请求自然继续。请注意,如果您的用户名与站点中的目录匹配,这可能会给您带来麻烦。此外,它确实为恶意用户提供了一种方法(尽管很耗时),通过了解哪些名称重定向到登录页面来找出您网站的用户名。

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var url = HttpContext.Current.Request.RawUrl;

        IEnumerable<string> userNames = GetKnownUserNames(); //Get known user names from your repository

        if (userNames.Contains(url))
        {
            Response.Redirect(String.Format("mysite/Profle/Default.aspx?username={0}", url));
        }
    }

您可能需要进行一些调整才能使比较正常工作,但这会做到这一点。

于 2012-04-09T14:52:49.083 回答