[NotFoundParamAlert] - отслеживание несуществующих страниц с заданными URL параметрами
В очередной раз на крупном клиентском проекте, где настроены все виды контекста, обнаружил, что часть рекламных объявлений ведет на несуществующие страницы. Опять кто-то обновил структуру сайта, кто-то забыл об это сказать, а следовательно не были обновлены URL объявлений. Такое происходит регулярно из-за рассогласованности действий тех, кто занимается контентом и тех, кто контекстом. При этом если Google AdWords о несуществующих страницах предупредит, хоть и не сразу, то Яндекс Директ об этом вам не расскажет, он проверяет код ответа страницы и сообщает о проблемах только при добавлении объявления. И как правило, находятся подобные объявлениями, ведущие на несуществующие страницы, не сразу, а когда кто-то заподозрит неладное и полезет в статистику.
Для того, чтобы больше не наступать на эти грабли, не терять бюджеты и посетителей, решил написать компонент, которым хочу поделиться. Возможно данный компонент будет кому-то полезен, позволит сохранить нервы и деньги, или просто позволит избежать подобных проблем.

Логика работы компонента NotFoundParamAlert простая: на событие 'OnPageNotFound' вешается плагин, который сравнивает параметры указанные в URL с заданными ему параметрами (в том числе с использованием самых простых подстановок:? — один любой символ, * — группа символов), и в случае совпадения генерирует уведомление. Например, для Яндекс.Директ с настроенными UTM метками будет актуально использовать такую конструкцию: utm_*,_openstat,yclid.
На данный момент реализованы два основных варианта оповещения о проблемах:
— сгенерированное уведомление может быть послано на email, указанный в настройках,
— сгенерированное уведомление может быть добавлено в лог с возможностью задать уровень логирования,
— возможно выполнение обоих вышеперечисленных вариантов одновременно.
Компонент поддерживает следующие настройки (неймспейс notfoundparamalert):
Все замечания, предложения и пожелания по работе компонента пишите так же на гитхаб :)
Update: компонент был немного доработан и таки был был добавлен в официальный репозиторий и на modstore.pro.
Для того, чтобы больше не наступать на эти грабли, не терять бюджеты и посетителей, решил написать компонент, которым хочу поделиться. Возможно данный компонент будет кому-то полезен, позволит сохранить нервы и деньги, или просто позволит избежать подобных проблем.
Логика работы компонента NotFoundParamAlert простая: на событие 'OnPageNotFound' вешается плагин, который сравнивает параметры указанные в URL с заданными ему параметрами (в том числе с использованием самых простых подстановок:? — один любой символ, * — группа символов), и в случае совпадения генерирует уведомление. Например, для Яндекс.Директ с настроенными UTM метками будет актуально использовать такую конструкцию: utm_*,_openstat,yclid.
На данный момент реализованы два основных варианта оповещения о проблемах:
— сгенерированное уведомление может быть послано на email, указанный в настройках,
— сгенерированное уведомление может быть добавлено в лог с возможностью задать уровень логирования,
— возможно выполнение обоих вышеперечисленных вариантов одновременно.
Компонент поддерживает следующие настройки (неймспейс notfoundparamalert):
- parameters – список URL параметров, через запятую, для отслеживания. Допускается использование простых подстановок:? — один любой символ, * — группа любых символов.
- parameters_all – учитывать ли все переданные URL параметры или только совпадающие.
- alert_method – способ уведомления. Доступные значения: «log» – логирует сообщение, «mail» – отправляет сообщение на email, «both» – использует оба способа доставки сообщения.
- alert_log_level – уровень логирования сообщений. Доступные значения: «error», «warn», «info», «debug».
- mail_method – способ отправки почты. Доступные значения: «php» – встроенная в php функция mail(), «modx» – MODX мейлер.
- mail_from – валидный email с которого будут отправляться уведомления.
- mail_to – валидный email на который будут отправляться уведомления.
Все замечания, предложения и пожелания по работе компонента пишите так же на гитхаб :)
Update: компонент был немного доработан и таки был был добавлен в официальный репозиторий и на modstore.pro.
Комментарии: 5
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Но это не совсем правильно, водить пользователя с контекста через цепочку редиректов. Все таки с моей точки зрения объявление должно вести на страницу, которая сразу отдаст 200 ответ заголовка. Да и спасибо за идею, надо подумать есть ли смысл отслеживать аналогичные параметры при редиректе.
А то установил, но информации в списке так и нет.
Но тут необходимо учитывать один момент, компонент заточен именно для сбора несуществующих страниц с GET параметрами, поэтому для срабатывания страница должна их содержать. В основе компонента используется метод объекта Request getParameters(), который вырезает из запроса все части запроса связанные с формированием URL страницы, поэтому страницы без GET параметров логироваться не будут.
На пальцах это выглядит так:
www.example.com/manger/ — не сработает, так как GET параметры отсутствуют
www.example.com/manger/?test=1 — сработает, так как GET параметр присутствует
И тут есть два варианта, если Вы хотите проверить работает ли компонент, то можете сами составить запрос на несуществующую страницу с нужными параметрами. Например в настройках notfoundparamalert.parameters устанавливаем в _open* и сами физически заходим на заведомо несуществующую страницу с данным GET параметром, например www.example.com/advertisingg.html?_openstat=FleD5yGst1ZxN. После этого проверяем залогировалось ли и тогда можно быть уверенным, что все посещения пользователей несуществующих страниц с аналогичной меткой будут залогированы.
Либо если Вы хотите собирать все несуществующие страницы, то можно установить logpagenotfound от одного из создателей MODX.