我有一个嵌入视频的网站。每个iframe来自不同的网站。 问题是其中一些人将访问者重定向到他们指定的目的地而没有动作(点击,悬停等)。现在谷歌将我的网站列为可疑。 是否有任何PHP脚本可以跟踪从我的页面到另一个网站的每个退出链接? 假设我正在使用Wordpress并且已经创建了$ table_name跟踪1时间戳,2 - 我重定向的页面,以及3 - 外部网站/域的目标。
function the_function() {
// if there is any function
}
if ( the_function() == true // or false )
{
$wpdb->insert($table_name, array(
'timestamp' => $timestamp,
'page' => $my_page_redirected_to_a_different_domain,
'destination'=> $destination,
));
}
或者如果有任何js脚本,没问题
答案 0 :(得分:2)
无法以一般方式跟踪重定向 - 您必须在处理重定向之前触发事件,因此您必须知道这是如何发生的。
为什么?因为JS重定向是由浏览器处理而不是在服务器端处理 - 这意味着触发SQL插入的唯一方法是知道如何重定向被触发。这基本上就是你想要实现的目标:
window.location
的每次出现 - 您也可以搜索您已重定向的网址(所有本地js文件和外部文件你包括)<iframe>
。 iframe可以执行window.top.location.href
重定向主页面。click
事件。我想通过在你的js文件中搜索重定向网址,你也可以找到它。header
调用会捕获它。window.location
)如果它在本地文件中,您只需要对其进行评论即可,如果您想保留它但是跟踪它,请在window.location
电话之前添加此代码(&& #39; s jQuery,它会向/log-redirects.php
发出一个AJAX请求:
$.post( "/log-redirects.php", function( data ) {
// ADD the window.location line here
});
将window.location
调用移动到 AJAX回调中非常重要,因此只有在ajax调用完成后才会进行重定向。
如果重定向发生在外部js中,除了删除整个JS文件之外你不可能做任何事情 - 可能获取JS文件内容,删除重定向并将其包含在本地。
你可以尝试的一件事是在beforeunload
事件上添加一个监听器 - 尽管你必须对事件对象进行正确的检查以确定它是否是你的重定向&# 39;重新寻找,因为它会抓住任何卸载事件。
window.addEventListener("beforeunload", function (e) {
// do something
return false; // will result to a prompt to the user asking him if he really want to redirect
// return this only for the redirect you're looking for
});
请注意此方法doesn't seems to be completely reliable。
<iframe>
您可以将sandbox
属性添加到iframe,以防止它进行任何重定向。请注意,IE9及更低版本中的此属性is not supported。
<iframe src="http://youriframeurl.com/" sandbox=""></iframe>
你可以做与第一点相同的事情。您只想在链接中添加一个侦听器(如果在加载DOM后生成它,则使用on
):
$('a#mylink').on('click', function(e) {
// do something
e.preventDefault(); // add this if you want to cancel the redirection
});
header
重定向(PHP)这很简单 - 只需在header
来电之前添加您想要的代码。
我建议先使用beforeunload
事件来跟踪重定向 - 执行console.log(event);
可以为您提供有关重定向原因的一些见解。