2010-08-09 155 views
3

我正在使用IIS Url Rewrite模塊重寫我的ASP.Net Web應用程序的URL。網址正在從改寫:Response.Redirect頁面上Url重寫的URL Url重寫模塊

http://domain/version/page.aspx

http://domain/company/page.aspx

和瀏覽直接使用絕對路徑,當它工作得很好。使用相對路徑在應用內導航時會出現問題。 任何種類的相對路徑。

所有相對路徑重定向到相應的http://domain/version/page.aspx而不是它應該去的http://domain/COMPANY/page.aspx

我解決了很多問題的,加入這一行的BeginRequest事件在Global.asax中:

Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As System.EventArgs) 
    HttpContext.Current.RewritePath(HttpContext.Current.Request.Url.AbsolutePath, True) 
End Sub 

本質上講,它只是基礎重建所請求的URL的虛擬路徑。

但即使使用該Response.Redirect STILL重定向到實際路徑而不是虛擬路徑。

所以這個代碼:Response.Redirect("~/test.aspx")會重定向到domain/Version/test.aspx而不是domain/Company/test.aspx

如何使的Response.Redirect重定向到的,而不是實際的路徑(domain/VERSION/test.aspx

由於虛擬路徑(domain/COMPANY/test.aspx)。

回答

2

兩種選擇。你可以這樣做:

Response.Redirect("/company/test.aspx") 

Response.Redirect("http://domain/company/test.aspx") 

這是你必須處理,如果你要使用他們的使用動態URL的挑戰之一,和一個。

也許最好的解決方案是編寫一個函數,讓你所有的頁面都能看到這樣做。這樣你可以只寫:

MyRedirectFunction("test.aspx") 

和所有的細節都在幕後。

+0

這是我正在往下走的路......悲傷地看到它是唯一的好路徑。 – 2010-08-09 18:07:32