如何自动将广告系列跟踪数据添加到任何网址?

时间:2012-03-09 10:12:46

标签: url node.js

我从我的来源获得了一堆不同的网址,我想要的是重定向到相同的网址,但将广告系列数据添加到网址(以跟踪推荐的点击次数)。

例如,我有这些网址:

  

www.example.com/category/product/name.html

     

www.example.com/id_product=5

我想在最后添加以下内容:utm_source = SOURCE& utm_medium = MEDIUM& utm_campaign = CAMPAIGN

要成为

的网址
  

www.example.com/category/product/name.html?utm_source=SOURCE&utm_medium=MEDIUM&utm_campaign=CAMPAIGN

     

www.example.com/id_product=5&utm_source=SOURCE&utm_medium=MEDIUM&utm_campaign=CAMPAIGN

如果URL字符串有参数,如何正确检查并覆盖所有案例,并添加我的? 我想在node.js

中做到这一点

谢谢

3 个答案:

答案 0 :(得分:8)

再次使用node的url模块,对@snkashis进行阐述是一个类似但可以说更优雅的解决方案:

var addQueryParams = function (cleanUrl) {
  var obj = url.parse(cleanUrl, true, false);   
  obj.query['utm_source'] = 'SOURCE';
  obj.query['utm_medium'] = 'MEDIUM';
  obj.query['utm_campaign'] = 'CAMPAIGN';
  delete obj.search; // this makes format compose the search string out of the query object
  var trackedUrl = url.format(obj);
  return trackedUrl;
};

这样可行,因为url.format首先查找search,如果找不到它,它将组成query对象的查询字符串

  

(取自节点url模块文档http://nodejs.org/api/url.html#url_url_format_urlobj

     
      
  • 将使用搜索代替查询

  •   只有在没有搜索的情况下才会使用
  • query(object; see querystring)。

  •   

答案 1 :(得分:2)

以下是使用Node的URL模块显示不同场景的示例。

var url = require('url');

var exurls = ["www.example.com/category/product/name.html","www.example.com/id_product=5?hasparam=yes"]

var to_append = "utm_source=SOURCE&utm_medium=MEDIUM&utm_campaign=CAMPAIGN";

for (i=0;i<exurls.length;i++) {
    var parsedobj = url.parse(exurls[i],true,false);
    //Below checks if param obj is empty.
    if (Object.keys(parsedobj.query).length!==0) {
        var newpath = parsedobj.href+"&"+to_append;
    }
    else {
        var newpath = parsedobj.href+"?"+to_append;
    }
    console.log(newpath);
}

答案 2 :(得分:0)

Connect会帮助您:

var connect = require('connect');

var app = connect();
app.use(connect.query());
app.use(function (req, res, next) {
    console.log(req.query);
    res.end(JSON.stringify(req.query));
});

app.listen(3000);