0

我可能在这里担心太多了,但是在这里...

我已经使用google 活动链接构建器设置了 google 分析活动跟踪 URL 。

这很好,但我有 20 个不同的跟踪网址,而且还会有更多。

这些 URL 真的很难看,我不喜欢访问者在第一次访问我的网站时看到这个长跟踪 URL。


所以这是我想放在我的wordpress网站上的想法/理论。如果有人愿意帮助编写其中的 php 部分,我将不胜感激。或任何建议,如果这个想法是坏的。


例如,这些只是我的一些 URL

http://example.com/?utm_source=Company&utm_medium=MPU&utm_campaign=Promo

http://example.com/?utm_source=公司&utm_medium=排行榜&utm_campaign=促销

http://example.com/?utm_source=Company&utm_medium=Take%2BOver&utm_campaign=Promo

我也想立即重定向上述所有网址...

http://example.com/

在我的 header.php 或 functions.php 中使用 php


有什么方法可以编写,所以我可以简单地在数组/案例中添加新的跟踪 url。

任何建议都会非常感谢!


请不要这样笑 - 但我猜这就是我想要做的......

$landing = $_SERVER['REQUEST_URI'];

$campaigns = array(
"http://example.com/?utm_source=Company&utm_medium=MPU&utm_campaign=Promo",
"http://example.com/?utm_source=Company&utm_medium=Leaderboard&utm_campaign=Promo",
"http://example.com/?utm_source=Company&utm_medium=Take%2BOver&utm_campaign=Promo"
);

if ( $campaigns == $landing ) {

header( 'Location: http://example.com/' ) ;

}
4

3 回答 3

1

试试这个,

这是纯 javascript,用于在加载页面后从 url 中清除 utm_params。

function clear_utm_from_url(){
     var currentLocation = window.location.search.replace(/\?/g, '').split('&');
     var new_url = new Array();

     for( i = 0; i < currentLocation.length; i++){
         var q = currentLocation[i].split('=');
         if( q[0].search("utm_") ){
             new_url.push(currentLocation[i]);
         }
     }
     if( new_url.length > 0 ){
         new_url = "?"+new_url.join("&");   
     }else{
         new_url = "";
     }

     history.pushState({}, "", window.location.pathname+new_url);  
 }

并添加类似这样的东西,或者其他东西来运行功能

<body onload="clear_utm_from_url();">
于 2017-03-23T22:05:56.383 回答
0

删除查询字符串的简单方法:

if ($urlIsTracker) {
   list($url) = explode('?', $_SERVER['REQUEST_URI']);
   header("Location: $url", true, 301);
   exit;
}
于 2012-09-19T15:06:31.403 回答
0

你不应该那样做。

谷歌分析跟踪代码是客户端。它是一段 js 代码,在页面加载后执行。如果它没有找到 utm_* 查询参数,则不会向 ga 发送任何内容,因此您将在那里看到的统计信息将无法读取。很可能您只会在 ga ui 中看到总计。

无论如何,如果你想这样做......

$trackingParams = array('utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term');
$queryParams = array();
parse_str($_SERVER['QUERY_STRING'], $queryParams);
if (count(array_intersect($queryParams, $trackingParams)) > 1) {
    // This url has tracking params
    foreach ($trackingParams as $paramName) {
        unset($queryParams[$paramName]);
    }
    // You can use a regex, but i wouldn't recommend it
    $newUrl = str_replace(
        $_SERVER['QUERY_STRING'],
        http_build_query($queryParams),
        $_SERVER['REQUEST_URI']
    );
    header('Location: ' . $newUrl, true, 301);
    exit;
}

这是代码将在当前 url 中搜索 utm_* 参数并重定向到没有它们的 url,而其他查询参数保持不变。

于 2012-09-19T15:06:42.917 回答