Javascript Google analytics代码和带有php头位置的重定向
谷歌分析代码会在头位置重定向之前执行吗?如果没有,还有别的方法吗 例如:Javascript Google analytics代码和带有php头位置的重定向,javascript,php,google-analytics,http-headers,Javascript,Php,Google Analytics,Http Headers,谷歌分析代码会在头位置重定向之前执行吗?如果没有,还有别的方法吗 例如: <html> <body> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getEle
<html>
<body>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-0000000-0', 'domain.com');
ga('send', 'pageview');
</script>
</body>
</html>
<?php
header('Location: http://domain.com');
?>
(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga('create','UA-0000000-0','domain.com');
ga(‘发送’、‘页面浏览’);
试试看-不使用PHP,并且(对不起)不使用任何重定向原因码(如“301”等)
在我的情况下,它工作得很好:
(函数(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]| |函数(){
(i[r].q=i[r].q | |[]).push(参数)},i[r].l=1*新日期();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(窗口,文档,“脚本”,“www.google-analytics.com/analytics.js”,“ga”);
ga('create','UA-0000000-0','domain.com');
ga(‘发送’、‘页面浏览’);
window.location=http://www.domain.com/redirect-example';
想想你在这里想做什么:
谷歌分析代码由浏览器执行。PHP是在服务器上生成HTTP响应的预处理器
因此,执行顺序是:
请求传入(在Apache、NGINX上,无论什么)
PHP获取请求并执行必要的操作
PHP生成的输出(通常是HTML)被发送回客户端
客户端的浏览器呈现响应
响应中的任何JavaScript代码都在客户端浏览器中运行
PHP将在步骤2中生成HTTP重定向。它告诉客户端的浏览器转到其他地方,然后从第1步开始。但您基本上期望步骤5在两者之间的某个位置执行
很明显,这是行不通的
要么你找到一种从服务器端触发谷歌分析的方法(这可能会破坏跟踪的目的),要么你只需要摆脱重定向(并用JavaScript位置更改替换)或者跳过跟踪调用
如果您只需要一个下载计数器,那么您可以让PHP在发出重定向之前记录点击。那就行了。重定向的可能副本必须与php头301重定向一起使用。如果您在已经有HTML输出后可以发送php头,我会感到惊讶。这也是我的想法,不幸的是,这确实提供了一个可能的解决方案,但是您没有解释为什么问题中的代码不起作用,以及您的解决方案以不同方式解决了什么问题。关于您的实际代码:这是基于运气。浏览器可能能够及时发送跟踪呼叫,也可能无法。如果跟踪代码以某种方式允许向其附加事件,那将是最好的解决方案。否则,至少短时间的超时将增加跟踪调用实际通过的机会。
<?PHP
ob_start();
echo "<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-0000000-0', 'domain.com');
ga('send', 'pageview');
</script>";
header("Location: http://www.domain.com/");
ob_flush();