Такая вещь полезная для seo оптимизации. Все знают, что мертвые ссылки, это не очень хорошо. Искать в ручную такие страницы не очень весело, а вот когда поиск автоматически происходит и Вам на почту приходят адреса, так повеселее.:)
Данный скрипт я нашел в интернете, но он был в два раза больше и содержал кучу лишних, по моему мнению строк. К тому же, его сделал человек не с рунета. Все комментарии и текст письма был на английском. Я переделал немного и русифицировал с добавлением кодировки - utf-8.
Скрипт полностью автоматический и универсальный, его не нужно настраивать для работы. Адрес куда отправлять письмо, он берет тот, что Вы указали в настройках в админ части - Настройки - Общие - Адрес e-mail.
Готовый скрипт работает так, что фиксирует пользователя, который попал на страницу 404. После чего сразу отправляется письмо администратору. В письме указан получатель, отправитель, тема письма и сообщение.
В сообщении указывается время, когда посетитель попал на страницу с ошибкой, ссылка этой самой страницы, и сайт от куда он пришел. По последнему, если сайт определить не удалось, то выведется сообщение - неизвестно(например когда пользователь перешел по сохраненной закладе). Выглядит это примерно так:
Чтобы осуществить отправку, нужно сделать следующее. В папке Вашей темы найти файл 404.php и в самый верх добавьте код представленный ниже. Если у вас нет файла 404.php, то узнайте как его создать в этой статье - Как сделать страницу 404 для WordPress
Готовый код:
<?php // Статус header("HTTP/1.1 404 Not Found"); header("Status: 404 Not Found"); // Откуда пришли if (isset($_SERVER['HTTP_REFERER'])) { $referer = clean($_SERVER['HTTP_REFERER']); } else { $referer = "неизвестно"; } // url запроса if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER["HTTP_HOST"])) { $request = clean('http://' . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]); } else { $request = "неизвестно"; } // Время $time = clean(date("d M Y H:i", time())); // обработка function clean($string) { $string = rtrim($string); $string = ltrim($string); $string = htmlentities($string, ENT_QUOTES); $string = str_replace("\n", "<br>", $string); if (get_magic_quotes_gpc()) { $string = stripslashes($string); } return $string; } $email = get_bloginfo('admin_email'); $from = "From:" . $email; $headers = "Content-type: text/plain; charset=\"utf-8\"\r\n"; $header = "404 Ошибка на сайте"; $message = "Посетитель Вашего сайта попал на несуществующую страницу \n" . "Время: " . $time . "\n" . "Ссылка 404 страницы: " . $request . "\n" . "От куда пришел пользователь: " . $referer . "\n" ; mail($email, $header , $message, $headers, $from); ?>
Если Вы хоть немного разбираетесь в PHP, то поймете структуру и в случаи надобности как-то измените под себя, если это нужно. Также если нужно можно менять текст.
Хоть почта берется администратора, если нужно, Вы можете изменить ее. Для этого нужно заменить строку:
$email = get_bloginfo('admin_email');
На эту:
$email = "Ваша_почта@mail.com";
Теперь все готово. Чтобы проверить, попробуйте ввести адрес своего сайта потом слэш - / - и цифры или буквы наугад, после чего, обновить страницу. Например - ваш_сайт.com/jkhkkjkjhkkjkhk2121..
Дополнение. Установил себе и заметил еще одну полезную штуку. У меня есть статьи с примерами. Это ссылки на страницы где показана анимация, структура и тд, в общем пример чего-то. Так вот, если я там, случайно указал путь к картинки которой нет, или подключил например файл, а его в папке с примером нет, то когда кто-то попадет на эту страницу, он увидит все как надо, но вот мне приходит письмо, что подключенный файл не найден. Также, если Вы в теме, или записи где-то что-то подключите, укажете путь, а этого больше не будет, тоже придет письмо. То есть, запись посетитель увидит, но например без картинки, которая лежала на другом сайте. Вы узнаете сразу, что такой картинки нет и сможете быстро устранить проблему. Вот такой вот он оказался полезный. Лично мне понравилось.
На этом все, спасибо за внимание. 🙂