如何实现我的Web应用程序的Affiliate链接?

时间:2010-02-22 18:53:15

标签: java servlets java-ee affiliate

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

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

我认为上述问题的一个解决方案是:

为每个电子营销公司制作单独的网址,并为其提供相应的网址,并将所有这些网址重定向到一个Servlet。然后,数不了。特定网址(电子营销公司的网址)上的访问者数量。这家电子营销公司推荐的访客。

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

  

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

     

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

你也可以建议其他一些事情......

提前致谢

7 个答案:

答案 0 :(得分:2)

您也可以使用Query String参数。 (这可能是krassib所指的。) 像http://yoursite.foo/yourpage.jsp?affiliateid=ABC123

一样

然后让该单页从URL解析查询字符串并存储/计数。

答案 1 :(得分:1)

afaik,有三种可能性:

  1. 如您所述,每个公司的唯一网址
  2. 使用需要访问用户输入的“优惠券代码”。对访客来说有点烦人,但我见过这样的事情。
  3. 最后,只有当您提到的公司有网站并从那里链接到您的网站时才能工作:通过捕获引用网址
  4. 在我看来,最好的选择是第一选择。这可能是最广泛使用/知道的原因。

    你可能想要实施cookie来“记住”来自哪家公司的访客,所以当一位访客 - 在第一次访问时没有决定购买任何东西时 - 返回并购买东西,你就会知道哪家公司向您介绍您的网站。

答案 2 :(得分: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提供过滤器映射。

答案 3 :(得分:1)

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

想象一下http://myappz.com/fooshop_cs是销售产品的网址,这是您分发给您的关联企业的网址,但每个网址都有很小的变化。您只需通过劫持fragment identifier(即http://myappz.com/fooshop_cs#em001)为网址添加唯一ID即可。

一旦用户关注指向您网站的链接,该链接已使用唯一ID,您可以使用Javascript(location.href.search(/#em\d*/))检查ID是否存在。一旦你找到了一个ID,你只需触发一个AJAX调用就可以使该联盟成员获得一个等级(我可能会建议使用jQuery框架)。

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

再见

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

虽然它不是100%防弹(但是再一次,什么是100%防弹?)我认为在你的情况下它就足够了。我假设与您的联盟会员相关联的您的客户是从其中一个网站获得的?如果是这样,您可以轻松区分来自不同电子营销公司的客户,因为每个客户都应拥有自己的域名。

详细了解Referrer field。请记住,引用者欺骗或隐藏是可能的,但非常不可能(通过我的服务器日志文件,估计有95%的访问者发送了引荐来源字段)。

问候。

相关问题