Битые ссылки после переноса сайта: как найти 404 и настроить редиректы

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

Битые ссылки лучше искать сразу после релиза, пока ещё понятно, что именно менялось и какие URL должны были сохраниться.

Собрать карту старых URL

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

  • старый sitemap.xml;
  • выгрузка страниц из CMS;
  • access.log за последние недели;
  • страницы из поисковых систем;
  • важные рекламные ссылки;
  • ссылки из email-рассылок и документов.

Без списка старых URL редиректы настраиваются вслепую. Обычно забывают не главные страницы, а старые статьи, PDF, изображения и посадочные страницы.

Проверить sitemap

Новая карта сайта не должна содержать 404, редиректы и старый домен.

curl -I https://example.ru/sitemap.xml
curl https://example.ru/sitemap.xml | grep "http://"

Если sitemap генерируется автоматически, всё равно нужно проверить несколько URL руками.

Пройти сайт crawler-ом

Crawler помогает найти внутренние ссылки, которые ведут на 404. Можно использовать любой удобный инструмент: Screaming Frog, Sitebulb, самописный обход или простой скрипт для небольшого сайта.

В отчёте важны:

  • URL, который отдаёт 404;
  • страница, где стоит ссылка;
  • тип ресурса: HTML, image, CSS, JS, PDF;
  • код ответа;
  • цепочка редиректов.

Посмотреть access.log

После релиза полезно смотреть реальные 404 из логов. Там будут не только внутренние ссылки, но и старые внешние переходы.

grep " 404 " /var/log/nginx/access.log | tail -n 100

Для nginx-лога формат может отличаться, но идея та же: найти запрошенный URL и понять, нужно ли его восстанавливать или редиректить.

301-редиректы

Если у старой страницы есть новая аналогичная страница, нужен 301-редирект.

location = /old-page/ {
    return 301 /new-page/;
}

Если старой странице нет замены, не нужно редиректить всё на главную. Это ухудшает опыт пользователя и делает диагностику грязной.

Изображения и документы

При переносах часто ломаются не страницы, а файлы: картинки в статьях, PDF-инструкции, прайсы, презентации. Для пользователя это тоже битая ссылка.

find /var/www/site.ru -type f \( -name "*.pdf" -o -name "*.docx" -o -name "*.xlsx" \)

Если документы были важны для пользователей или SEO, их нужно перенести или настроить редирект на новые файлы.

Цепочки редиректов

Редирект должен вести на конечную страницу коротким путём. Плохо, если старый URL делает 3-4 перехода.

curl -IL https://example.ru/old-page/

После нескольких переездов часто остаются цепочки: http → https → www → новый URL → слеш. Их лучше упростить.

Чек-лист

  1. Собрать список старых важных URL.
  2. Проверить новый sitemap.xml.
  3. Пройти сайт crawler-ом.
  4. Проверить 404 в access.log.
  5. Настроить 301 для страниц с прямой заменой.
  6. Не редиректить всё подряд на главную.
  7. Проверить изображения, PDF и документы.
  8. Убрать длинные цепочки редиректов.
  9. Повторить проверку через несколько дней после релиза.

Битые ссылки после переноса — нормальная техническая задача, а не катастрофа. Плохо, когда их не ищут. Если проверять sitemap, crawler и реальные 404 из логов, большинство проблем можно закрыть быстро и без гадания.

Комментарии (0)

Пока нет комментариев. Будьте первым!