【问题标题】:Get Search Queries from UrlReferer从 UrlReferer 获取搜索查询
【发布时间】:2013-09-22 20:28:47
【问题描述】:

我正在用 ASP.Net 4 开发一个网站。其中一项要求是记录人们用来查找我们网站的搜索查询。因此,假设在 Referrer 中存在名为“q”的 URL 参数,我在 MasterPage 的 Page_Load 中编写了以下代码:

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”值。用户键入以查找我的网站的真实搜索词。有人知道怎么解决吗?

【问题讨论】:

    标签: c# asp.net search-engine url-parameters


    【解决方案1】:

    【讨论】:

    • 谢谢。我们已经知道了。问题是“是否有办法获得真正的 'q' 值”
    猜你喜欢
    • 2013-01-30
    • 2012-08-24
    • 2019-01-26
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多