如何将活动跟踪数据自动添加到任何url



我从我的来源得到了一堆不同的URL,我想重定向到同一个URL,但在URL中添加了活动数据(以跟踪引用的点击)。

例如,我有以下URL:

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

www.example.com/id_product=5

我想在末尾添加以下内容:utm_source=source&utm_medium=中等&utm_campaign=活动

URL将成为

www.example.com/category/product/name.html?utm_source=source&utm_medium=中等&utm_campaign=活动

www.example.com/id_product=5&utm_source=source&utm_medium=中等&utm_campaign=活动

如果URL字符串有参数,我如何正确地检查和覆盖所有情况,并添加我的参数?我想在node.js 中完成

感谢

在@snkashis上进行细化,这是一个类似但可以说更优雅的解决方案,再次使用节点的url模块,它是:

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)

  • 将使用搜索代替查询

  • 查询(对象;请参阅querystring)将仅在缺少搜索时使用。

这里有一个示例,显示了使用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);
}

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);

相关内容