【发布时间】:2011-11-06 23:31:58
【问题描述】:
所以我知道一般的经验法则是在 PHP 中进行标头重定向之后,您应该调用 exit() 以避免运行额外的代码,但我想知道您是否将代码放在重定向标头之后,如果它会总是跑步?
我正在对 Google Analytics 中跟踪推荐的各种方法进行一些研究,并发现了这篇文章:Google Analytics Tips & Tricks – Tracking 301 Redirects in Google Analytics
建议这样做:
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.new-url.com” );
?>
<script type=”text/javascript”>
var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(“%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));
</script>
<script type=”text/javascript”>
try {
var pageTracker = _gat._getTracker(“UA-YOURPROFILE-ID”);
pageTracker._trackPageview();
} catch(err) {}</script>
从我一直理解 header() 函数的方式来看,它取决于浏览器,它可以随时运行重定向。因此,无法保证 JavaScript 会在重定向发生之前实际开始或完成执行。
PHP's documentation for the header() function 表示重定向后退出的原因是“确保我们重定向时不会执行下面的代码”。这听起来不像他们保证所有以下代码都会运行,只是它可能会发生。
不管怎样,我找到了一种不同的方法来实际管理跟踪,但我想看看我是否可以找出 header() 在这种情况下究竟是如何工作的..
感谢您的帮助。
【问题讨论】:
-
我正在研究跟踪重定向页面的相同问题;你能分享你的“其他方式”吗?谢谢。
-
自从我设置它已经有几年了,真的不记得我做了什么,甚至不记得这是什么项目。也就是说,我会想象解决方案涉及事件跟踪。 developers.google.com/analytics/devguides/collection/gajs/… 如果你重定向到new-url.com/?from301 那么你可以在看到相应的URL参数时触发相应的事件。就像我说的那样,我没有具体的细节,但我想我就是这样做的。