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

Ale*_*u R 3 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

和URL成为

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中做到这一点

谢谢

ale*_*anu 8

详细阐述@snkashis,一个类似但可以说更优雅的解决方案,再次使用node的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;
};
Run Code Online (Sandbox Code Playgroud)

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

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

  • 搜索将用于代替查询

  • query(object; see querystring)仅在没有搜索时使用.