Ошибка 404 и оповещение
Ранее я уже писал о том, что обязательно нужна на блоге отдельная страница ошибки 404 и ее оформлении в статье “404ю надо использовать“.
Остановимся еще на одном моменте. Страницу с выводом ошибки надо использовать по полной программе. Конечно, хостеры предлагают статистику по ошибкам в логах хостинга, к примеру в wardstate, который часто лежит в папке сайта. Но нам, как всем русским, очень лениво лезть и смотреть что же там понакосячило. Предлагаю быстрое уведомление вас, как владельца сайта блога на wordpress по мейлу. Сделать это довольно просто, займемся этим.
Находим файл 404.php в файлах вашей темплаты (шаблона). Именно он отвечает за вывод данных при ошибке 404 – отсутствие страницы запроса. Вполне возможно, что в вашей темплате вывод организован по другому, но пока не будем трогать ответвления, а остановимся на основной схеме организации.
Итак, файл 404.php найден. Дописываем в него в редакторе Notepad2 (чтобы не заморачиваться с проблемами boom и utf кодировкой) следущее:
<?php include(TEMPLATEPATH . "/404info.php"); ?>
Таким образом мы указываем, что необходимо будет подключить еще и файл информатор об ошибке. Создаем в папке нашего шаблона еще один (пока пустой) файл 404info.php Что же мы будем писать в новом файле – да некоторый кусочек такого вот вида
<?php $adminemail = get_bloginfo('admin_email'); $website = get_bloginfo('url'); $websitename = get_bloginfo('name'); if (!isset($_SERVER['HTTP_REFERER'])){ $failur = "Кто-то пытался зайти на: $website".$_SERVER['REQUEST_URI']." и получил 404 ошибку (страницы нет)."; $failur .= " Он пришел отсюда: ".$_SERVER['HTTP_REFERER']; mail($adminemail, "Сообщение о 404 ошибке",$failur,"От: $website"); } ?>
Первые три строки определяют мейл админа, указанный в настройках блога, URL блога и его название. Далее идет кусочек, определяющий что должно быть указано в письме администратору. Ну а последнее это команда на отправку письма вебмастеру со всеми данными, которые удалось собрать по поступившей ошибке 404.
Далее уже ваше дело – не обращать внимание на поступившее сообщение или принять меры по определению почему ошибка возникла и как это дело исправить.
Замечу, что файл стоит сохранить в кодировке ANSI, не будет проблем с отображением текста письма в мейлерах и не надо будет переключаться в кодировках.
Еще, в продолжение темы, можно чуть видоизменить и дополнить параметрами отправляемое письмо: пусть теперь файл 404info.php будет содержать это -
<?php $adminemail = get_bloginfo('admin_email'); $website = get_bloginfo('url'); $uri = $_SERVER['REQUEST_URI'];; $ip = $_SERVER['REMOTE_ADDR']; $ref = $_SERVER['HTTP_REFERER']; if($ref == ""){$ref = "Нет данных";} $e_line = "Сайт: $website | Запрошена страница: $uri | Откуда пришел: $ref | IP: $ip"; mail($adminemail, "Сообщение о 404 ошибке",$e_line,"От: $website"); ?>
Соответственно, получим сообщение с какого сайта письмо, какую страницу запросили, откуда пришел запрос и его IP. Вполне вероятно, что данные откуда поступил запрос может не оказаться, тогда просто будет вписано -”Нет данных”
Ваши предложения по улучшению оповещения и мыслях, что еще можно выжать из страницы, принимаются.