2011-04-11 102 views
0

嘿家伙, 我使用asp.net 2.0和dotnetnuke 5.6,并使用交叉模块,现在我希望该用户可以为该文章创建多个别名。在asp.net中重写url

像下面说的那样。 文/计算器 stackexchange /条 等。

说第一篇文章与文章编号1的联系,第二个是2条款ArticleID链接,就应该跳出各自的网页.. 像文/ 1或文章/ 2

我可以做到这一点从web.config文件...但问题是可能有las alias'es,所以维护它在web.config文件是完全失败的想法。所以我想与Global.asax文件做..

我尝试下面的代码:

字符串变量i保存:Request.RawUrl.ToString() 然后将其与输入的URL的用户比较和然后将他重定向到适当的页面...

但我有以下问题: 我不希望用户重定向我想重写url,即,如果用户输入文章/ stackoverflow ...他应该被重定向到文章/ 1页但网址应保留。

请任何人提出的东西这个问题..

回答

1

要重写URL(而不是重定向),你可以做这样的事情:

private static void RewriteUrl(HttpApplication application, TabInfo tabInfo, string additionalQueryString) 
{ 
    application.Context.Items["UrlRewrite:OriginalUrl"] = application.Request.Url.AbsoluteUri; 

    var portalAliasInfo = PortalAliasController.GetPortalAliasInfo(application.Context.Request.Url.DnsSafeHost);   
    application.Context.Items["PortalSettings"] = new PortalSettings(tabInfo.TabID, portalAliasInfo); 

    var queryString = String.Format("tabid={0}" + additionalQueryString, tabInfo.TabID); 
    application.Context.RewritePath("~/default.aspx", string.Empty, queryString, false); 
} 

我建议你在一个HttpModule做尽管不是修改核心代码。