每当我做这样的事情时,它就一直在使用HttpContext.RewritePath()
. 快速的'n脏方法是把它放在globabl.asax中,根据请求。您可以使用Request.Url
获取请求的 URL 的一部分,根据需要对其进行修改,然后调用 RewritePath。像这样的东西:
void Application_BeginRequest(object sender, EventArgs e)
{
string Authority = Request.Url.GetLeftPart(UriPartial.Authority); // gets the protocol + domain
string AbsolutePath = Request.Url.AbsolutePath; // gets the requested path
string InsertedPath = string.Empty; // if QS info exists, we'll add this to the URL
// if 't' exists as a QS key get its value and contruct new path to insert
if (Request.QueryString["t"] != null && !string.IsNullOrEmpty(Request.QueryString["t"].ToString()))
InsertedPath = "/t/" + Request.QueryString["t"].ToString();
string NewUrl = Authority + InsertedPath + AbsolutePath;
HttpContext.Current.RewritePath(NewUrl);
}
一旦您对它按预期工作感到高兴,您就可以将其粘贴在 HttpModule 中。
注意:对不起,代码不完整,不在开发机器上,不能记住所有 Request.Url 部分。Intellisense 应该会有所帮助:)