Настройка счетчика Google Analytics. Расширенный отчет о 404 ошибках

Отслеживание 404 ошибок в Google Analytics Всем привет, друзья. Решил потихоньку продолжать пополнять блог публикациями по работе и настройке Google Analytics. Сегодня будет небольшая, но от этого не менее полезная заметка о том, как отслеживать 404 ошибки (404 Not Found) на сайте. Но не просто отслеживать, а получать еще очень полезную информацию: адрес страницы, которая отдала ошибку и страницу реферер (страницу с которой был совершен переход). Надеюсь, вы понимаете всю пользу этого метода.

Ведь если у вас большой сайт с десятками тысяч страниц, то отследить битые внутренние ссылки – задача не из легких. Хотя и на сайте с парой сотен страниц (а это любой среднестатистический блог) тоже проблематично найти неправильные ссылки. А если еще и структуру url’ов меняли, то вообще…

Короче, я надеюсь, что у вас уже давно установлен счетчик GA на сайте, при этом он новой версии (асинхронный код). Так ведь? Если еще не установили счетчик, то сделайте это, так как постепенно я планирую написать много полезных публикаций про настройку и отслеживание важных событий на сайте.

Хватит воды, приступаю к делу.

Для решения поставленной задачи (отследить битые ссылки и получить при этом максимум полезной информации) нам ничего сверхъестественного не понадобится, а всего лишь простой код:

<script type="text/javascript">
_gaq.push(['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);
</script>

Я понимаю, что я не первый, кто об этом пишет, но все варианты, найденные мной в сети, либо для устаревшего кода GA, либо вообще не работают, потому я экспериментировал, пока не получил рабочий вариант.

Итак, представим, что мы сейчас работаем с движком WordPress, а потому идем в админку -> Внешний вид -> Редактор -> Шаблон ошибки 404 (404.php)

Далее в любое место этого файла вставляем указанный выше код. Я вставлял код сразу после заголовка <h2 class="center">Ошибка 404 — Не найдено</h2>.

Я думаю, что и для всех других более или менее приличных движков есть отдельный шаблон вывода сообщения об ошибке. Например, для DLE в папке своего шаблона надо найти файл info.tpl и туда вставить этот код.

Предлагаю сейчас еще раз взглянуть на код и понять, что же он делает и какие данные определяет:

'/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer

Разбираем:

  • location.pathname – возвращает путь в url’е.
    Например, для страницы https://alaev.info/blog/post/2784 будет возвращено значение /blog/post/2784
  • location.search – возвращает запрос в url’е.
    Например, для страницы https://alaev.info/feedback.html?email=example@mail.ru будет возвращено значение ?email=example@mail.ru
  • document.referrer – возвращает url документа с которого был совершен переход, иными словами реферер.
    Пример, я полагаю, не нужен, и так все понятно ;)

Теперь вернемся к коду Google Analytics:

_gaq.push(['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);

Этот код передает в статистику просмотр страницы, а нашем случае это будет виртуальная страница /error404 с последующими параметрами, определяемыми JS-скриптом, описанными выше.

Теперь мы знаем, как это работает, пришло время рассказать о некоторых особенностях:

  • Код для отслеживания ошибки должен ОБЯЗАТЕЛЬНО идти после основного кода GA. То есть, если код GA стоит у вас в футере, то это не сработает, надо перенести код ближе к началу документа, например, поставить его сразу после открывающего тега <body>.
  • Код отслеживания ошибки генерирует виртуальную страницу дополнительно к передаваемой странице, отдающей ошибку 404, стандартным кодом. То есть при просмотре страницы с ошибкой в статистике фиксируется просмотр сразу двух страниц, самой несуществующей страницы и виртуальной страницы /error404.
  • Особенностей предыдущего пункта можно избежать только в том случае, если на всех страницах сайта у вас будет вставлен стандартный код GA, а в шаблоне страницы ошибки будет измененный код GA.

    Например, на всех страницах сайта такой код:

    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
      _gaq.push(['_trackPageview']);
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>

    А на странице ошибки такой:

    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
      _gaq.push(['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);
      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();
    </script>

После всех настроек данные об ошибках можно найти в отчете: Содержание -> Содержание сайта -> Страницы -> в форме поиска пишем «error404». В новом интерфейсе (интерфейс GA, к слову, меняется чуть ли не каждый месяц, так что будьте внимательны) отчет расположен тут: Поведение -> Контент сайта -> Все страницы -> в форме поиска так же пишем «error404».

Вроде и все. Извиняюсь за то, что в посте нет скриншотов, ошибок у меня нет на блоге (это хорошо, разумеется), а тестовые ошибки показывать как-то не круто.

Надеюсь, эти настройки вам помогут в улучшении вашего сайта. А еще не забудьте прочитать еще один мой пост про Google Analytics: Учим Google Analytics понимать поисковый трафик!

Александр «АлаичЪ» Алаев
Александр «АлаичЪ» Алаев

Вот уже 18 лет я профессионально занимаюсь созданием и продвижением сайтов и 13 лет с удовольствием пишу в любимый блог. Создал заслужившие доверие в seo-сообществе программы FastTrust и ComparseR и известный сервис для проверки траста сайтов CheckTrust.ru.

В 2014 основал веб-студию «АлаичЪ и Ко» в Краснодаре: 1 место в рейтинге агентств интернет-маркетинга (Рейтинг Рунета), 2 место в рейтинге SEO-компаний (CMSmagazine), 12 место в рейтинге известность бренда SEO-компаний в России (SeoNews).

Выступаю на профильных конференциях (All In Top, SEO Conference, SEMPRO, Baltic Digital Days). Веду канал в telegram про seo и бизнес. SEO-специалист года 2019 и 2020 (Sape).

Ерунда и баянЪ!Зачет! Плюсую!
+6

Профессиональный технический аудит и рекомендации по оптимизации вашего сайта.
Тот самый необходимый «фундамент» для успешного продвижения.

30 000 руб.

Комплексный подход к решению поставленных задач: достижение топ-10 и увеличение трафика на сайт. В стоимость уже включены полный технический аудит и оптимизация сайта.

45 000 руб.

У вас недостаточно знаний и нужны ответы на вопросы?
Интересует мнение эксперта или надо проверить подрядчика?
Вы задаете вопрос — я отвечаю!

5 000 руб./час

Проведу подробное исследование вашего сайта и основных конкурентов, опубликую материал на блоге для обсуждения и коллективного поиска новых идей.

70 000 руб.

Я начал запись своего обучающего курса по seo-продвижению.

В каждом видео я разбираю какую-то одну важную тему, и делаю это последовательно, в порядке, подходящем для изучения с нуля. Видео выкладываются раз в неделю – по средам. Я думаю, весь курс будет состоять из 50-70 роликов, так до конца еще далеко, а значит самое время подписаться и начать изучение вместе со мной.

В блоке слева всегда будет выводиться самое свежее видео курса. Ссылки: на мой канал, на плейлист обучения.

Комментарии: 37 Написать комментарий
  1. dachnik (16 комм.)

    не совсем вас понял что будет если у меня на странице с 404 ошибкой выводиться стандартный код GA и после него будет идти указанный вами код. у меня сайт работает на drupal и код отслеживания выводиться модулем на всех страницах

    Ответить
    • АлаичЪ

      Я об этом и писал — в вашем случае (как, собственно, и в моем на всех моих сайтах) счетчик зафиксирует сразу два просмотра страницы. Например, в отчете Google Analytics зафиксируется страница http://site.ru/page-which-not-found.html (это раз) и страница http://site.ru/error404?page=/page-which-not-found.html&from=/referrer-page.html (это два),

      где:

      /page-which-not-found.html — страница, которая не существует и, соответственно, отдает ответ 404 Not Found;

      /referrer-page.html — страница с которой совершен переход на страницу, которая не существует.

      Понятно?

      Ответить
  2. Alex (8 комм.)

    Для WordPress можно заюзать плагин http://wordpress.org/extend/plugins/email-404/

    И получать сообщения в почту.

    Ответить
    • АлаичЪ

      Зачем плагин? Зачем почта? Это все ерунда, когда есть универсальный вариант, который не спамит и никакого мусора в движке ;)

      Ответить
  3. Евген (6 комм.)

    Проблема решается с помощью xenu

    Ответить
    • АлаичЪ

      Ну да, вероятно это и подойдет для очень небольших сайтов.

      Попробуйте просканировать сайт где, несколько десятков тысяч страниц, много миллионов внутренних ссылок и...этого хватит, чтобы неполучить нужных результатов.

      Нет, я серьезно, вы попробуйте прямо сейчас! А я буду ждать от вас ответа ;)

      Ответить
  4. inftim (1 комм.)

    А как прописать в joomla 1.7 у меня с ним проблемы???

    Ответить
    • АлаичЪ

      В Joomla есть такой файлик, который лежит в папке templates/system/error.php, это самостоятельная html-страница.

      Поэтому вам надо будет не отдельно код вставлять туда, а полностью измененный код счетчика. Как раз для вас подойдет пункт в посте после слов "Особенностей предыдущего пункта можно избежать".

      Вставьте модифицированный код сразу после открывающего тега <body>. Все будет работать!

      Ответить
  5. Window (2 комм.)

    У меня вопросик хотть и не по теме но я так понял вы знатаки джумла. Скажите плиз где можно исправить в шаблоне сайта в верхней шапке надпись адресса фирмы там стоит заголовок h1. Из за этой ошибки сайт в поиске выводит совсем нето что надо сперва.

    Ответить
    • АлаичЪ

      Нет, это не так, я не люблю и не пользуюсь Джумлой, к вашему сожалению. А с ответом на предыдущий комментарий мне помог программист. Как только он будет в сети я попрошу его ответить на ваш комментарий.

      Ответить
  6. Миша unknownbiz (6 комм.)

    У меня cms modx любую страницу смогу настроить как хочу, вопрос про код GA

    1)Нужно ли вписывать дополнительные строки из поста про GA как научить распознавать другие поисковые системы помимо стандартных в код для страницы 404?

    2)У меня сама страница ошибки 404 задана в движке т.е. я номер страницы пишу в поле и создаю страницу 404.

    А потом я когда хочу ее проверить пишу имядомена.ру/керщткиш и отдает мне ошибку 404

    Страница которую я создаю доступна по адресу имя домена/404 — она везде и подгружается

    Как мне лучше сделать? создать отдельный счетчик для страницы 404 +(дополнительные поля из вопроса №1 который выше написал)

    Просто в моем случае конкретной страницы нет, вернее она есть, но на нее с ошибочных страниц не редиректит, а просто подгружает шаблон и отдает правильную ошибку

    Ответить
    • АлаичЪ

      1. Да, надо вписывать, на всякий случай.

      2. Я смутно что понял, на самом деле :( Но 100% вариант — взять и добавить в шаблон, который подгружается при 404 ошибке, тот JS-код, который указан в начале поста и все будет работать!

      Ответить
  7. Андрей (2 комм.)

    Что-то путанно написали:(

    Правильно ли я вас понял:

    если вставить в код ГА строчку _gaq.push (['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);

    и поместить код ближе к началу страницы, — то все будет работать, но засчитываться будут две страницы.

    Чтобы этого избежать надо просто в код шаблона страницы об ошибке вставить текущий код ГА, но с добавлением строки _gaq.push (['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);

    Ответить
    • АлаичЪ

      Может и путано, но мне все понятно =)

      Чтобы не было «двойного» просмотра, надо сделать так, чтобы на всех страницах сайта вставлялся стандартный код GA, а на страницах 404 немного измененный. А измененный он только в одном месте

      В стандартном коде GA есть такая строчка:

        _gaq.push(['_trackPageview']);

      А в измененном строчка заменяется на такую:

        _gaq.push(['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);

      Понятно?

      Ответить
      • Андрей (2 комм.)

        Ага. спасибо.

        Про настройку корзины не хотите написать?;)

        Ответить
        • АлаичЪ

          Про настройку отслеживания действий покупателей в разделе корзины для интернет-магазинов?

          Неее... Я дела с интернет магазинами не имел, и не собираюсь пока, так что в этом вопросе я не компетентен :(

          Ответить
  8. Блогер фотограф (9 комм.)

    А возможно настроить через отдельный профиль и фильтры в профиле, но с возможностью, просмотра страницы, откуда попали на 404

    Ответить
    • АлаичЪ

      Это вопрос или утверждение?

      Ответить
      • Блогер фотограф (9 комм.)

        Вопрос и утверждение! Знаю, что можно, не знаю как...

        Ответить
        • АлаичЪ

          Я не интересовался этим моментом. Но мне это и не надо, а чем вас не устраивает описанный выше вариант?

          Ответить
  9. Tania (1 комм.)

    Для сервера типа Apache должен быть файл у папки со страницами сайта и названием

    .htaccess и содержанием файла хотя бы:

    ErrorDocument 404 /?error=404

    Ответить
    • АлаичЪ

      Это зачем, по вашему мнению?

      Ответить
  10. Дмитрий (1 комм.)

    Содержание-Все страницы. Там есть возможность выбрать основной параметр — заголовок.

    Далее фильтруем по заголовку (title) страницы с ошибкой — ну к примеру Страница не найдена.

    Далее Дополнительный параметр-Целевая страница.

    Ответить
  11. Андрей (1 комм.)

    На друпальный сайт кто нить ставил данный код?

    Ответить
  12. Женя (4 комм.)

    После сделанных манипуляций перестал индексировать страницы гугл. Яндекс как индексировал так и индексирует! В чем может быть проблема?

    Ответить
    • АлаичЪ

      Проблема уж точно не в настройках, описанных в посте :)

      Ответить
  13. Иван (10 комм.)

    Подскажите, данная схема:

    В стандартном коде GA есть такая строчка:

    _gaq.push (['_trackPageview']);

    А в измененном строчка заменяется на такую:

    _gaq.push (['_trackPageview', '/error404?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer]);

    Как будут показаны страницы, если пользователь перешел со стороннего сайта или из поисковика. Будет работать? Просто сейчас сделали перенос сайта и все урл перенесли на другие по 301 редиректу, хотелось бы отследить страницы с 404 на которые заходят из сторонних сайтов, а не по внутренним ссылкам. Спасибо.

    Ответить
    • АлаичЪ

      Заходите в отчет: Содержание — Содержание сайта — Все станицы,делайте там поиск по error404

      Ответить
  14. RUS777 (1 комм.)

    А если в страницу с выводом счетчика добавить условие пхп, <? if ($mode=='error404') : ?> то выводим код счетчика с отслеживание страниц 404, если <? else: ?>, то есть если страница существует, то выводим страндартный код ГА, тогда не будет такой проблемы когда считается два захода итд.

    Ответить
  15. Владимир (18 комм.)

    Сделал как Вы и написали. Основной код аналитикса — в хедере. В коде 404 страницы после <h2> добавил скрип. После этого добавил сисмовлы к урл — получил 404 ошибку пару раз. Но в статистике ничего нет... тут же нужно смотреть в Аналитиксе — http://prntscr.com/9cua39?

    Ответить
    • АлаичЪ

      Во вкладке События посмотрите.

      Ответить
      • Владимир (18 комм.)

        В событиях вообще пусто — http://prntscr.com/9dxtz0. При размещения комментария я указывал адрес сайта на котором реализовано. Если можно, посмотрите, пожалуйста, почему может не работать данный метод на моем сайте... Вроде сделал же все как написано... Заранее благодарен.

        Ответить
        • Владимир (18 комм.)

          Здравствуйте, Саша.

          Так и не получил от Вас ответа... Возможно мой комментарий с адресом сайта попал в спам и Вы его не видели... :( Все еще надеюсь, что сможете помочь мне советом, почему описанный Вами метод может не работать на моем сайте на вордпрессе... Все сделал как написано, тем более пример у Вас для вордпрессе как раз, а статистики нет... В чем может быть проблема? Заранее благодарен за ответ.

          Ответить
          • АлаичЪ

            В новом интерфейсе отчет расположен тут: Поведение -> Контент сайта -> Все страницы -> в форме поиска так же пишем «error404».

            Ответить
            • Владимир (18 комм.)

              Спасибо за ответ. Но я там тоже проверял и смотрел сразу же — тоже нет данных...

              В heder.php перед закрывающимся тегом </head> вставлен код Аналитикса.

              В 404.php после заголовка <h2> вставлен скрипт из статьи — вот http://prntscr.com/9s1a60, но данных почему-то нет... :((

              Ответить
              • АлаичЪ

                Значит что-то не правильно. У меня стата есть в GA до сих пор, хотя я данный отчет с момента написания поста не смотрел.

                Ответить
                • Владимир (18 комм.)

                  Все сделал как написано в статье. На скриншотах это показал в комментариях. Значит Ваш метод при каких-то условиях — не работает... :(

                  Ответить