我有一个 php 文件,我在用户成功购买订阅后加载该文件,以使用 adwords 转化跟踪跟踪购买转化。之后需要将用户重定向到下一个适当的页面/account/subscription/
最初,我将header("Location: /account/subscription/");
放在产生了headers already sent
错误的转化跟踪代码下方。所以现在我把它放在跟踪代码的上方。
因为我知道在标题重定向后发送die()
的好做法是将其放在跟踪代码下方,这样它就不会在页面加载 html 之前杀死页面。
即使header
重定向位于页面顶部,它下面的 HTML 会在重定向之前呈现吗?
<?
header("Location: /account/subscription/");
?>
<!-- Event snippet for Example Purchase conversion page -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-************/**************',
'transaction_id': ''
});
</script>
<?
die();
?>
No.
仅当重定向未静默跟踪时,才会使用重定向响应的正文。
我不知道有任何常见的网络浏览器不会默默地遵循重定向。我认为猞猁可以配置为其他方式。
die()
的一般做法是有条件地重定向并希望避免执行其他处理或包含任何不适合重定向邮件的 HTML。
虽然这篇文章很旧,但我认为这可能会有所帮助。下面的工作得很好,因为html仍然会被渲染
<?php
header("Refresh: 0.5; url=http://example.com");
?>
<!DOCTYPE html>
<html>
you tracking code here in body
为了重定向,在添加标头部分之前,必须包含另一个部分 ob_start();
,这启用了对象缓冲,因此在页面完全加载之前不会发送标头。要完成:编辑:我现在意识到这不是你想要实现的。我不相信它可以在纯PHP中完成
<?
ob_start();
?>
<!-- Event snippet for Example Purchase conversion page -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-************/**************',
'transaction_id': ''
});
</script>
<?php
header("Location: /account/subscription/");
?>