如何防止广告在重定向过程中被调用



在我的一个基于类的网站上,所有内容都通过index.php页面控制,每个页面都是自己的class,通过该索引页面调用。

在其中一个类中,同时存在为站点的每个页面调用的已登录和已注销标头,这两个标头都会调用出现在站点顶部的Ad

问题是,无论何时在页面上进行重定向,都要等到该页面的类被调用后才会发生,这种情况发生在已经调用了页眉之后,这意味着为一个自页面以重定向结束以来从未看到的广告进行了广告调用。

这对广告的性能产生了负面影响,因为它降低了广告的点击率(CTR)。

如果在加载该页面的类之前无法知道该页面最终重定向,我如何确保在页面最终重定向时不会进行广告调用?

我能想到的唯一"开箱即用"的解决方案是,以某种方式使用输出缓冲区首先加载该页面的类,然后以某种方式将标题附加到缓冲区的开头,如果缓冲区到达该位置而没有重定向,但我不知道这是否可行,也不知道如何做到这一点。

有什么想法吗?

编辑:

为了澄清,重定向已经通过HTTP标头完成,并且所有输出当前都在缓冲中。然而,每个页面都有自己的重定向原因,所以这就是为什么它由每个页面控制的原因。例如,一个页面负责发送消息,当发送消息时,它会在将消息保存到数据库后将用户重定向回收件箱。在另一个页面上,不允许注销的用户,因此特定页面会检查用户是否登录,如果没有,则将他们重定向到登录页面。

然而,似乎即使启用了完全输出缓冲,并且通过各个类页面内的header()函数进行重定向,缓冲在运行头重定向之前仍然会进行Ad调用。

重定向必须在HTTP标头中进行,而不是使用HTML元标记或Javascript技巧或类似方法。HTTP头需要先输出,然后再输出。正因为如此,仅仅因为它是有意义的,应用程序应该在尝试输出任何HTML之前决定是否要重定向用户。因此,应该没有任何问题。

如果您当前的应用程序逻辑在决定重定向用户之前输出或准备HTML(触发广告),那么您的应用程序结构就很糟糕。改变它。它应该这样工作:

...
if ($userNeedsToBeRedirected) {
header('Location: http://example.com/other/url');
exit;
}
// output HTML and ads here
// never triggered on a redirect

最新更新