Как отловить с какой страницы идет переход на 404.php
Господа, мое почтение. В анализирую логи своего сайта, вижу что пользователи время от времени попадают на страницу 404, задумал я значит узнать куда они тыкают и по каким еще причинам они редиректятся туда.
(mamp, apache, localhost)
В .htaccess
прописал ErrorDocument 404 /404.php?url=%{HTTP_REFERER}
с затаенной надеждой что все сработает (спойлер нужен?)
Далее на странице 404.php я во влажных фантазиях прописываю код, который обработает все чего я так хочу
// записываем в лог с какой страницы был переход
$log_file = 'logs/404.log';
$url = isset($_GET['url']) ? $_GET['url'] : 'unknown';
$timestamp = date('d.m.Y H:i:s');
$log_message = "[$timestamp] 404 : $url\n";
file_put_contents($log_file, $log_message, FILE_APPEND);
Тут как видно, все просто, генерим строку и помещаем в 404.log. И что я вижу?
[17.04.2023 08:17:20] 404 :
[17.04.2023 08:17:29] 404 :
[17.04.2023 08:17:44] 404 :
[17.04.2023 08:17:50] 404 :
После двоеточия пусто, сухо и не комфортно
- Если умышленно допускать ошибку в url сайта и спровоцировать работу
example.com/hello_wor44ld
то в лог попадает пустая строка - Если находясь на этой странице обновить окно браузера - то в лог опять попадает пустая строка
- Если находясь на этой странице сохраниться в VSCode (live server) то в лог попадает тот url, который я хочу
PS. И в заключение: Ранее в .htaccess
было прописано ErrorDocument 404 /404.php
и при переходе на битый url открывалась 404.php и в браузере отрисовывался контент этой страницы. Теперь же, контент отрисовывается со страницы 404, однако в адресной строке прописывается битый url
Как же мне записать в лог битый url?