2011-04-11 100 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做盡管不是修改核心代碼。