C# 从UrlReferer获取搜索查询

C# 从UrlReferer获取搜索查询,c#,asp.net,search-engine,url-parameters,C#,Asp.net,Search Engine,Url Parameters,我正在用ASP.NET4开发一个网站。其中一个要求是记录人们用来查找我们网站的搜索查询。因此,假设referer中存在一个名为“q”的URL参数,我在母版页的页面加载中编写了以下代码: if (!CookieHelper.HasCookie("mywebsite")) CookieHelper.CreateSearchCookie(); 我的CookieHelper类是这样的: public class CookieHelper { public static void CreateSea

我正在用ASP.NET4开发一个网站。其中一个要求是记录人们用来查找我们网站的搜索查询。因此,假设referer中存在一个名为“q”的URL参数,我在母版页的页面加载中编写了以下代码:

if (!CookieHelper.HasCookie("mywebsite")) CookieHelper.CreateSearchCookie();
我的
CookieHelper
类是这样的:

public class CookieHelper
{
  public static void CreateSearchCookie()
  {
    if (HttpContext.Current.Request.UrlReferrer != null)
    {
        if (HttpContext.Current.Request.UrlReferrer.Query != null)
        {
            string q = HttpUtility.ParseQueryString(HttpContext.Current.Request.UrlReferrer.Query).Get("q");
            if (!string.IsNullOrEmpty(q))
            {
                HttpCookie adcookie = new HttpCookie("mywebsite");
                adcookie.Value = q;
                adcookie.Expires = DateTime.Now.AddYears(1);
                HttpContext.Current.Response.Cookies.Add(adcookie);
            }
        }
    }
  }

  public static bool HasCookie(string cookiename)
  {
    return (HttpContext.Current.Request.Cookies[cookiename] != null);
  }
}
乍一看似乎还可以。我创建了一个模仿谷歌链接的页面,工作起来很有魅力。但是它在主机服务器上不工作。原因是,当你搜索
blah blah
时,你会在浏览器地址栏中看到类似
www.google.com/?q=blah+blah
。你期望在结果中点击你的链接,将重定向到你的站点,你可以抓取“q”参数。但是,不幸的是,这不是真的!Google,首先将您重定向到如下地址:

http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCgQFjAA&url=http%3A%2F%2Fwww.mywebsite.com%2F&ei=cks5Uof4G-aX0QXKhIGoCA&usg=AFQjCNEdmmYFpeRRRBiT_MGH5a1x9wUUlg&bvm=bv.52288139,d.d2k&cad=rja
这将重定向到您的网站。正如您所看到的,“q”参数这次是空的!我的代码得到一个空字符串,实际上并没有创建cookie(或者其他什么)。
我需要知道是否有办法解决这个问题,并得到真正的“q”值。真正的搜索词用户键入以查找我的网站。有人知道如何解决这个问题吗?

谷歌停止传递搜索关键字:
谷歌停止传递搜索关键字:

谢谢。我们已经知道了。问题是“是否有办法获得真正的‘q’值”谢谢。我们已经知道了。问题是“是否有办法获得真正的‘q’值”