查询字符串作为网址的一部分

时间:2012-02-01 09:45:26

标签: c# asp.net query-string

我有一个带有查询字符串http://www.sample.com?q=asdasdsdasd的网址。是否可以修改查询字符串,以便我可以用/ myaccount替换它,即最后网址看起来像http://www.sample.com/myaccount

5 个答案:

答案 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]);

}

然后使用此地址 http://www.sample.com/myaccount/asdasdasd