我有一个带有查询字符串http://www.sample.com?q=asdasdsdasd的网址。是否可以修改查询字符串,以便我可以用/ myaccount替换它,即最后网址看起来像http://www.sample.com/myaccount。
答案 0 :(得分:2)
string destUrl = string.Format("{0}://{1}{2}/",Request.Url.Scheme,Request.Url.Authority,Request.Url.AbsolutePath);
if (destUrl.EndsWith("/"))
destUrl = destUrl.TrimEnd(new char[] { '/' });
if (!string.IsNullOrEmpty(Request.QueryString["paramName"])) {
destUrl = string.Format("{0}?paramName={1}", destUrl, "paramValueHere");
Response.Redirect(destUrl);
答案 1 :(得分:1)
结帐url rewriting。您可能无法直接获得/ myaccount,但您可以整理您的网址,使其对SEO更具可读性和意义。
您可以使用以允许您的网址看起来类似于以下内容:
www.sample.com/account/asdaasdasd
如果您一起丢失查询字符串,则根本无法访问它。除非您实现某种形式的临时代码以获取查询字符串,否则将其存储在会话中,然后重定向到您的/myaccount
网址并将其恢复到那里。
答案 2 :(得分:0)
我认为你指的是网址重写。
这是一篇关于URL重写的常用博文:
http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
或者,如果你有IIS7,它现在变得更容易了:
http://www.iis.net/download/urlrewrite
关于将?q=asdasdsdasd
更改为/myaccount
,我不明白。第一个URL看起来像是一个典型的搜索查询,第二个URL可能会使用cookie等来获取变量(作为用户帐户的?)。
但是,可以使用URL重写,这样如果您的用户个人资料的网址如下:
<强> www.sample.com?userprofile.aspx?user=johnsmith 强>
这可以使用johnsmith
部分作为变量重写:
<强> www.sample.com/user/johnsmith 强>
答案 3 :(得分:0)
使用简单的字符串操作,您可以这样做:
string urlWithQuerystring = "http://www.sample.com?q=asdasdsdasd";
int queryStringPos = urlWithQuerystring.IndexOf("?");
string newUrl = String.Format("{0}/myaccount/", urlWithQuerystring.Substring(0, queryStringPos));
答案 4 :(得分:0)
在Global.asax中使用此代码:
void Application_BeginRequest(object sender, EventArgs e)
{
string[] parts = Request.RawUrl.Split(new char[]{'/'});
if(Part[1] == "myaccount"))
Context.RewritePath("http://www.sample.com?q=" + Part[2]);
}