[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
Плюсанул, но можно autoReditector поставить )…
Павел, можно. Я им пользуюсь почти на всех проектах, кстати, спасибо Илье :)
Но это не совсем правильно, водить пользователя с контекста через цепочку редиректов. Все таки с моей точки зрения объявление должно вести на страницу, которая сразу отдаст 200 ответ заголовка. Да и спасибо за идею, надо подумать есть ли смысл отслеживать аналогичные параметры при редиректе.
Но это не совсем правильно, водить пользователя с контекста через цепочку редиректов. Все таки с моей точки зрения объявление должно вести на страницу, которая сразу отдаст 200 ответ заголовка. Да и спасибо за идею, надо подумать есть ли смысл отслеживать аналогичные параметры при редиректе.
Можно ли просто установить данный компонент и начать получать список URL страниц, на которые заходили пользователи и им открывалась 404 страница?
А то установил, но информации в списке так и нет.
А то установил, но информации в списке так и нет.
И да и нет. В настройках можно задать в notfoundparamalert.parameters значение * и тогда плагин будет собирать все несуществующие страницы со всеми GET параметрами.
Но тут необходимо учитывать один момент, компонент заточен именно для сбора несуществующих страниц с 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.
Но тут необходимо учитывать один момент, компонент заточен именно для сбора несуществующих страниц с 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.
Ясно. Спасибо за столь развернутый ответ!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.