2011-11-07 32 views
0

有一個像網址:我如何短URL

www.zzz.com/ExternalDocuments/ExternalDocumentUpload.aspx?hjgbasdjfjsggfsdf 

我想提供一些短期的ExternalDocuments/ExternalDocumentUpload.aspx。我不想縮短整個網址。

+1

你試過了什麼?它是如何不如預期的那樣工作的? – sarnold

+0

它並不難短的URL或URL的一部分,並添加一些不同的字符串到原來的URL部分代替長URL作爲你的情況,但你的web服務器應該知道,這個URL需要被重定向到原來的一個。你有沒有想過第一個? 你可以在這裏應用很多算法。最簡單的方法就是從這個小網址或者5個字符中隨機輸入一個字符,並將它變成一個新的1.但是這對於你來說不會是一個長期存在的算法。 – Zenwalker

+0

實際上已經有一個網址適用於所有頁面,但是這個網址是獨立的,用戶無需登錄。我有這樣的代碼,但無法理解我應該在哪裏找到答案。也許masterpage或默認登錄頁面? – user728630

回答

3

這聽起來像你想要的是不是「縮短」 - 一個服務例如像bit.ly用於縮短整個URL以用於Twitter或類似的 - 但「URL重寫」。

這需要由用戶提供的「友好」的路徑 - 到的「/」的權利 - 並把它變成你需要ASP.NET找到頁面的URL。

有一個關於ASP.NET的正是這味幾個不同的方面,這取決於做和IIS你使用。 Scott Gu的綜述這裏:

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

和IIS7我用這裏的一個:

http://www.iis.net/download/URLRewrite

1

您可以設置URL在Global.asax文件重寫,上的Application_BeginRequest事件,它會在每個請求上運行,檢查請求的url,如果需要,將其重定向到所需的url。你可以像這樣的檢查:

protected void Application_BeginRequest(Object sender, EventArgs e) 
{ 
    if (Request.RawUrl== "/someShorturl/page.aspx") 
    { 
     HttpContext.Current.RewritePath("/ExternalDocuments/ExternalDocumentUpload.aspx?hjgbasdjfjsggfsdf"); 
    } 
} 

所以,如果用戶進入「www.zzz.com/someShorturl/page.aspx」,他將獲得「www.zzz.com/ExternalDocuments/ExternalDocumentUpload.aspx ?hjgbasdjfjsggfsdf「頁面,但瀏覽器中的url不會更改。

如果你想改變縮短的URL爲長原始地址,你可以調用Response.Redirect的替代RewritePath方法。

這個例子是一個speciffic網址,但您可以創建更復雜的邏輯,當然。