我正在使用IIS Url Rewrite模块重写我的ASP.Net Web应用程序的URL。网址正在改写:
http://domain/version/page.aspx
到
http://domain/company/page.aspx
使用绝对路径直接浏览时效果很好。使用相对路径在应用程序中导航时会出现问题。 任何种相对路径。
所有相对路径都会重定向到相应的http://domain/version/page.aspx
,而不是重定向到它应该去的http://domain/COMPANY/page.aspx
。
我通过将此行添加到Global.asax中的BeginRequest事件来解决了很多问题:
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/COMPANY/test.aspx
)而不是实际路径(domain/VERSION/test.aspx
)
感谢。
答案 0 :(得分:2)
两个选项。你可以这样做:
Response.Redirect("/company/test.aspx")
或
Response.Redirect("http://domain/company/test.aspx")
这是使用动态URL的挑战之一,如果您打算使用动态URL,则需要处理这些挑战。
最好的解决方案可能是编写一个所有页面都可以看到的功能。那样你就可以写:
MyRedirectFunction("test.aspx")
所有细节都在幕后。