Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Разбор

Циклические ссылки и петли в навигации

Петли в ссылках создают тысячи ненужных адресов. Разберём типичные причины и способы их найти.

Что такое петля

Петля — ситуация, когда переходы по ссылкам не приводят к конечному набору страниц. Робот заходит на страницу, находит ссылку, которая ведёт на «новый» адрес, а там — ещё одну такую же. В итоге он тратит запросы на бесконечную череду страниц без пользы. Не путайте с циклическими перенаправлениями: о них — в статье про диагностику и лечение.

Типичные причины

Причины петель в навигации
ПричинаПризнакРешение
Относительные ссылки без слеша в началеАдреса вида /catalog/catalog/catalog/Использовать ссылки от корня сайта
Календарь с переходом «следующий месяц»Бесконечные страницы будущих датОграничить диапазон, закрыть дальние даты
Сочетание фильтров без ограниченийТысячи комбинацийОграничить набор индексируемых комбинаций
Ссылка на текущую страницу в менюПункт активного раздела ведёт на себя жеНе делать активный пункт ссылкой
Ссылка на страницу с другим адресомРазные адреса одной страницы циклически ссылаются друг на другаЕдиный канонический адрес

Относительные ссылки: классическая ошибка

Если в шаблоне написано так:

<a href='catalog/'>Каталог</a>

то на странице /catalog/ ссылка приведёт к адресу /catalog/catalog/, а оттуда — к /catalog/catalog/catalog/. Сервер часто отвечает на такие адреса, показывая ту же страницу, и робот получает бесконечный набор дублей. Надёжное решение — ссылки, начинающиеся со слеша: какие ссылки использовать.

Как найти петли

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

Как исправить

  1. Исправьте источник: шаблон, плагин, модуль календаря или фильтра.
  2. Настройте для лишних адресов ответ 404, чтобы бесконечные пути обрывались.
  3. При необходимости закройте служебные разделы правилами в robots.txt.
  4. Проверьте результат повторным обходом и контролем журнала.

Связанные материалы. Про обход сайтов с большим числом фильтров — в статье про фильтры и обход, а про экономию запросов робота — в материале про бюджет обхода.

Проверка перед выкладкой новых модулей

  • Прогоните тестовый сайт краулером с ограничением глубины: число найденных адресов должно быть конечным.
  • Проверьте, что ссылки в шаблонах начинаются со слеша или полного адреса.
  • Посмотрите, не создаёт ли новый модуль календаря или фильтра ссылки «следующий» без ограничения.
  • Убедитесь, что несуществующие адреса возвращают 404, а не главную страницу.

Частые вопросы

Что такое ловушка для робота?

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

Почему относительные ссылки без слеша опасны?

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

Как быстро обнаружить петли?

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

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также