Простое решение получить его в журнале apache состоит в замене внешних ссылок на что-то вроде:
<a href="tracker.php?url=http://example.com" target="_blank>
, где tracker.php
на вашем сервере и просто перенаправляет на внешний сайт:
header('Location: ' . $_GET['url']);
Это можно сделать вручную, или вы можете заменить ссылки на стороне клиента, используя jQuery, например:
$("a[target='_blank']").each(function(e){
var href = $(this).attr("href");
$(this).attr("href", "tracker.php?url=" + encodeURIComponent(href));
});
Fiddle из выше
В качестве альтернативы вы можете захватить событие click, используя jQuery и сделать запрос к вашему файлу tracker.php
с целевым URL-адресом в качестве параметра запроса, а затем перенаправить:
<a href="http://example.com" target="_blank">test</a>
// Click event for a tags with target='_blank' attribute
$("a[target='_blank']").click(function(e){
e.preventDefault(); // Prevent the default behaviour (the link opening)
var href = $(this).attr("href"); // Get the href attribute of the clicked element
// Make a get request to tracker.php passing the encoded href
$.get("tracker.php?url=" + encodeURIComponent(href), function(data) {
window.open(href); // Open the link in a new window once http request is complete
});
});
Недостатки этого метода:
Управление с клавиатуры (фокус + клавиша возврата) будет зафиксировано.
Для того, чтобы любой из них работал, вам нужно убедиться, что apache настроен на запись запросов GET который, скорее всего, будет по умолчанию, что-то вроде:
0.0.0.0 - - [20 / Feb / 2020: 13: 15: 48 +0100] "GET /tracker.php ? url = http://example.com HTTP / 1.1 "200