Наверх

Отправляем уведомление об открытии 404 страницы на сайте

Перенес блог на новый дизайн и столкнулся с тем, что пользователи стали иногда попадать на 404 страницу (по сообщениям из метрики). Решил узнать, какие страницы у пользователей не открываются. В итоге написал плагинчик, который, в принципе, можно использовать на любом сайте для того, чтобы не терять посетителей и сразу узнавать о проблемах с несуществующими страницами.



Создаем плагин на событие OnPageNotFound:
<?php
if ($modx->event->name != "OnPageNotFound") return;

$mailto = 'mail@ilyaut.ru';

$uri = $_SERVER['REQUEST_URI'];
if (substr($uri, 0, 1) == "/") $uri = substr($uri, 1);

$params = array(
    'referer' => $_SERVER['HTTP_REFERER'],
    'backlink' => urldecode($_SERVER['HTTP_REFERER']),
    'searchbot' => $_SESSION['searchrobot'],
    'searchtext' => $_SESSION['searchtext'],
    'uri' => $uri
);

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->setHTML(true);
$modx->mail->set(modMail::MAIL_SUBJECT, 'Уведомление о 404 странице');
$modx->mail->set(modMail::MAIL_BODY, $modx->getChunk('404notify', $params));
$modx->mail->set(modMail::MAIL_SENDER, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME,  $modx->getOption('site_name'));
$modx->mail->address('to', $mailto);

if (!$modx->mail->send()) {
    $modx->log(xPDO::LOG_LEVEL_ERROR, 'An error occurred while trying to send the email: '
    . $modx->mail->mailer->ErrorInfo);
}

$modx->mail->reset();

И чанк 404notify для оформления письма:
<h2>Обнаружен переход на несуществующую страницу</h2>
<p>Пользователь открыл ссылку и был отправлен на страницу 404:
<a href="[[++site_url]][[+uri]]">[[++site_url]][[+uri]]</a></p>

<p><strong>Источник перехода:</strong> <a href="[[+referer]]">[[+backlink]]</a></p>

Поисковая система: <strong>[[+searchbot]]</strong>, запрос: <strong>[[+searchtext]]</strong>

Поисковую систему и запрос определяет плагин addCrawler, про который писал Виктор Банев.

15 комментариев

  1. Владимир 07 марта 2014, 12:42 # 0
    Нужная в хозяйстве вешь! Спасибо. Было бы здорово эти плагины оформить в один пакет и ставить из репозитария, так как это опять претендует на must have
    1. Роман 07 марта 2014, 14:17 # 0
      Супер!
      1. Алексей Инютин 08 марта 2014, 09:21 # 0
        Илья, доброго времени суток!
        Подскажите пожалуйста, как можно с Вами связаться?
        напишите на почту pirat19[собака]gmail.com

        Спасибо!
        1. Илья Уткин 11 марта 2014, 19:20 # 0
          Ответил на почту.
        2. Rоман Роман 10 марта 2014, 18:47 # 0
          Кстати весьма полезная вещь в хозяйстве, особенно когда пытаются ломиться на страницы /administrator/ и /wp-login/. Можно заранее лочить хотя бы по IP
          1. Rоман Роман 18 марта 2014, 20:18(Комментарий был изменён) # 0
            Решено, невнимательно читал письмо
            1. Владимир 19 апреля 2014, 01:26 # 0
              Мои извинения, не заметил
              $mailto = 'mail@ilyaut.ru';, полагал что получателя то же из emailsender плагин берет.
              Соответственно наслал писем я с десяток на mail@ilyaut.ru
              Виноват)
              1. Владимир 19 апреля 2014, 13:45 # 0
                Доброго дня! При том, что плагин работает отлично, есть такой момент:
                при открытии в админке документа, с использованием визуального редактора, происходит обращение к файлу изображения, в путь к файлу добавляется папка manager что приводит к отправке сообщения 404:
                «Пользователь открыл ссылку и был отправлен на страницу 404: http://***********.ru/manager/images/admin/klapanu/FP/fp.gif
                Источник перехода: http://***********.ru/manager/index.php?a=30&id=105»
                На самом деле изображения все есть ( папка пока в корне /images/admin/** так как сайт переносился с джумлы).
                1. vgrish 19 апреля 2014, 23:40(Комментарий был изменён) # 0
                  в плагин поставьте проверку на пользователя. чтоб срабатывал только на анонима. И думаю все ок будет
                2. Илья 12 августа 2014, 12:04 # 0
                  Хороший плагин, вот только откуда в день десяток сообщений о посещений 404 ошибок не с моего сайта не понимаю(
                  1. сергей 23 июня 2016, 10:56 # 0
                    а если у меня smtp только доступно для отправки почты, как это использовать?
                    1. Илья Уткин 23 июня 2016, 11:01 # 0
                      Можно использовать уже готовое дополнение Notify404
                      1. сергей 23 июня 2016, 11:38(Комментарий был изменён) # 0
                        получилось и с текущим решением отправить, работает.

                        но почему то не определяется поисковой запрос который реализован по инструкции community.modx-cms.ru/blog/tips_and_tricks/17110.html
                        1. Илья Уткин 23 июня 2016, 12:12 # 0
                          А дело в том, что Яндекс стал шифровать REFERER и теперь запрос никак не определить — только используя Яндекс-Метрику.
                          1. сергей 23 июня 2016, 12:13(Комментарий был изменён) # 0
                            он оно чо. Спасибо Илья!

                    Авторизация

                    через сервис Loginza:

                    Подписка или RSS

                    Буду присылать новые статьи — никакого спама



                    Шаблоны MODX

                    1 2 Дальше »

                    Объектная
                    модель
                    MODX