8

我使用销售我的一个软件的 Java EE 平台构建了一个 Web 应用程序。

现在我想把我的网站营销工作交给各种电子营销公司。但由于我必须给他们佣金,我应该知道谁发送了流量。

我认为解决上述问题的一种方法是:

为每个电子营销公司创建一个单独的 URL,并为他们提供相应的 URL,并将所有这些 URL 重定向到一个Servlet. 在那之后,数一下。访问特定 URL(电子营销公司的 URL)的访问者数量。该电子营销公司推荐的访问者。

TheGoogle和其他各种使用类似的技术来区分彼此。

Q1。他们都使用这种方法吗?

Q2。有没有其他方法可以更好地完成这项工作?

你也可以建议一些其他的东西......

提前致谢

4

7 回答 7

2

您也可以使用查询字符串参数。(这可能是 krassib 所指的。)比如http://yoursite.foo/yourpage.jsp?affiliateid=ABC123

然后只需让该单个页面解析来自 URL 的查询字符串并存储/计算它。

于 2010-03-02T16:08:51.153 回答
1

afaik,有3种可能性:

  1. 正如你提到的,每家公司的唯一网址,
  2. 使用访问用户需要输入的“优惠券代码”。对访客来说有点烦人,但我见过这样的事情。
  3. 最后,仅当您提到的公司有网站并从那里链接到您的网站时才有效:通过捕获引荐来源网址

最好的,在我看来,是第一个选择。这可能就是为什么这是最广泛使用/知道的。

您可能希望实施 cookie 来“记住”来自哪家公司的访客,因此当访客 - 在第一次访问时没有决定购买任何东西 - 返回并购买东西时,您会知道哪家公司介绍你的网站给他们。

于 2010-03-01T06:39:13.523 回答
1

是的,我同意@krassib 和@TomR - 使用 queryString 参数,然后您可以编写一个 servlet 过滤器来检查特定参数并增加该附属机构的计数。使用 servlet 过滤器还可以为您提供额外的好处,即可以跟踪每个附属机构的单个链接的数量。

您执行以下操作:

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class AffiliateTrackingFilter implements Filter {
    private AffiliateTrackingService affiliateTrackingService = null;

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest rq, ServletResponse rs,
            FilterChain chain) throws IOException, ServletException {
        String affililateId = rq.getParameter("affiliateId");
        affiliateTrackingService.incrementAffiliateHit(affililateId);
        chain.doFilter();
    }

    @Override
    public void init(FilterConfig fc) throws ServletException {
        affiliateTrackingService = new AffiliateTrackingService();
    }
}

然后将这样的内容添加到您的web.xml

<filter>
    <filter-name>AffiliateTrackingFilter</filter-name>
    <filter-class>com.example.AffiliateTrackingFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>AffiliateTrackingFilter</filter-name>
    <servlet-name>MyMainServlet</servlet-name>
</filter-mapping>

并为您的所有 servlet 提供过滤器映射。

于 2010-03-05T10:45:12.233 回答
1

好的,这是另一个。您可以使用锚点方法。让我解释:

想象一下,这http://myappz.com/fooshop_cs是销售产品的 URL,这是您分发给您的附属公司的内容,但每个都有一个小的变化。您只需通过劫持片段标识符(即http://myappz.com/fooshop_cs#em001)将唯一 ID 添加到 URL 。

一旦用户点击了指向您网站的链接,该链接已被收取唯一 ID,您可以使用 Javascript ( location.href.search(/#em\d*/)) 检查 ID 是否存在。一旦你找到了一个 ID,你只需触发一个 AJAX 调用就可以让该附属公司更上一层楼(我可能会推荐 jQuery 框架来这样做)。

这种方法的好处是搜索引擎不关心片段标识符,并且您将能够从单个页面销售您的产品。您的用户也不会在意,因为锚对他们绝对没有影响(除非您在页面中设置锚标记)。

再见

于 2010-03-05T21:42:21.513 回答
1

关于 aefxx 关于片段标识符的回答,我认为这种方法的好处是保持 SEO 排名。如果是这样,您仍然可以使用查询字符串来管理它,但您必须在 Google 网站管理员工具中将它们设置为忽略。我认为必应和雅虎可能有类似的机制。这样,您仍然可以根据查询字符串进行跟踪,事实上,如果您愿意,您也可以在 Google Analytics(它不跟踪片段标识符)中进行跟踪,无需自定义。

于 2012-12-05T16:22:48.147 回答
0

与上一个答案非常相似 - 您可以为每个附属网站提供一个他们将提交的唯一密钥(在 URL 中)。您的服务器应用程序将(解密和)将密钥与附属网站列表进行匹配并计算潜在客户来源。

于 2010-02-23T00:13:49.363 回答
0

为什么不使用已经存在的东西?我说的是 HTTP 协议及其标头字段之一:Referrer(通常传递给环境变量 HTTP_REFERER 或 HTTP_REFERRER 中的代码)。

虽然它不是 100% 防弹(但话又说回来,什么是 100% 防弹?)我认为在你的情况下它可能就足够了。我假设您的与附属公司相关的客户是从他们的网站之一获得的?如果是这样,您将很容易区分来自不同电子营销公司的客户,因为他们每个人都应该有自己的域名。

阅读有关推荐人字段的更多信息。请记住,虽然引用者欺骗或隐藏是可能的,但非常不可能(查看我的服务器日志文件,估计有 95% 的访问者确实发送了引用者字段)。

问候。

于 2010-03-05T20:58:09.280 回答