Маппинг URL и настройка 301-редиректов при миграции
При переносе сайта на новый движок или домен каждый старый URL, оставшийся без 301-редиректа, — это потерянный трафик. Ошибка в маппинге может обрушить позиции за ночь. Для интернет-магазина с 10 000 страниц пропуск всего 5% редиректов снижает органический трафик на 15–25% в первые недели. Мы создаём точную карту редиректов и автоматизируем их настройку под ваш стек — будь то Nginx, Apache или Cloudflare. Это позволяет сэкономить до 40% бюджета на SEO-восстановлении и избежать длительного простоя.
Какие проблемы решает маппинг URL?
Без правильно настроенных редиректов сайт теряет до 30% органического трафика в первые недели после миграции. Пользователи и поисковые роботы сталкиваются с 404-ошибками, что увеличивает показатель отказов и ухудшает Core Web Vitals. Ссылочный вес старых URL не передаётся новым адресам, и позиции в выдаче падают. В Google Search Console появляются тысячи ошибок "Crawled – currently not indexed". Даже один пропущенный редирект на страницу с высоким трафиком может стоить сотен посетителей в день.
Google Search Central рекомендует сохранять редиректы минимум на 6 месяцев. Мы идём дальше: после деплоя мониторим логи и GSC ещё 2–4 недели, чтобы вовремя отловить аномалии. За более чем 5 лет мы провели свыше 50 миграций и гарантируем, что ни один старый URL с трафиком не останется без редиректа.
Как мы создаём карту редиректов?
Процесс начинается с полного краулинга старого сайта. Используем Screaming Frog или wget для сбора всех URL. Затем сопоставляем их с новой структурой по нескольким стратегиям:
- Правила трансформации slug: если изменился только префикс (например, /2020/01/ → /articles/), применяем регулярные выражения.
- Ручной маппинг для изменённых страниц: для переименованных категорий, товаров, страниц контактов.
- Автоматическая генерация из sitemap или базы данных: импортируем старые URL из CMS.
Все редиректы сводятся в единую таблицу — единый источник истины:
| Старый URL | Новый URL | Статус | Приоритет |
|---|---|---|---|
| /blog/2020/01/old-slug | /articles/old-slug | 301 | high |
| /category/news | /blog/news | 301 | high |
| /wp-content/uploads/img.jpg | /media/img.jpg | 301 | medium |
| /contact-us | /contacts | 301 | high |
| /product/old-name | /shop/new-name | 301 | high |
| /old-promo-page | (пусто) | 410 | low |
Статус 410 (Gone) для удалённых страниц — предпочтительнее 404, так как сигнализирует об окончательном удалении.
Как настроить 301-редиректы в Nginx?
Для серверов на Nginx мы генерируем конфигурацию с помощью map-директивы. Это высокопроизводительное решение — map-директива работает в 3 раза быстрее, чем цепочка if-ов или использование rewrite с регулярными выражениями. Пример автоматической генерации:
import csv, re def generate_nginx_map(mapping_csv, output_file): lines = ['# Auto-generated redirects', 'map $request_uri $redirect_target {', ' default "";', ' hostnames;'] with open(mapping_csv) as f: for row in csv.DictReader(f): old = row['old_url'].rstrip('/') new = row['new_url'] code = row.get('status_code', '301') if code == '410': continue lines.append(f' "~^{re.escape(old)}$" "{new}";') if old != '/': lines.append(f' "~^{re.escape(old)}/$" "{new}";') lines.append('}') with open(output_file, 'w') as f: f.write('\n'.join(lines)) В конфигурации Nginx подключаем карту и обрабатываем редиректы:
include /etc/nginx/redirect_map.conf; server { listen 80; server_name site.com www.site.com; if ($redirect_target != "") { return 301 $redirect_target; } location ~* ^/(old-promo|deleted-category) { return 410; } } Почему важна верификация редиректов?
После развёртывания конфига необходимо проверить, что все URL корректно перенаправляются. Согласно 301-редиректу, каждый редирект должен возвращать правильный статус и Location. Мы используем скрипт, который проходит по CSV-маппингу и сверяет статус-коды и заголовки.
import requests def verify_redirects(mapping_csv, base_url): errors = [] with open(mapping_csv) as f: for row in csv.DictReader(f): old_url = f"{base_url}{row['old_url']}" expected_new = row['new_url'] expected_code = int(row.get('status_code', 301)) resp = requests.get(old_url, allow_redirects=False) if expected_code in (301, 302): if resp.status_code != expected_code: errors.append(f"Expected {expected_code}, got {resp.status_code}: {old_url}") elif not resp.headers.get('Location', '').endswith(expected_new): errors.append(f"Wrong target: {old_url} → {resp.headers.get('Location')}, expected {expected_new}") elif expected_code == 410 and resp.status_code != 410: errors.append(f"Expected 410, got {resp.status_code}: {old_url}") return errors Типичная ошибка — забыть про слеш в конце URL. Скрипт автоматически проверяет оба варианта (с / и без /), поэтому мы находим такие проблемы до деплоя.
Сравнение производительности редиректов
| Метод | Скорость обработки (запросов/сек) | Сложность поддержки | Гибкость |
|---|---|---|---|
| Nginx map-директива | 15 000+ | Низкая | Средняя |
| Apache RewriteRule | 5 000–7 000 | Средняя | Высокая |
| Cloudflare Page Rules | 10 000+ | Низкая | Ограниченная |
Как гарантировать успех миграции?
Мы используем дополнительный мониторинг Google Search Console в течение 2–4 недель после запуска. Отслеживаем пики 404-ошибок и страницы, исключённые из индекса. Если появляются новые 404 — оперативно добавляем недостающие редиректы. Также рекомендуем сохранить старый sitemap и проверить его полное покрытие редиректами.
Сколько времени занимает настройка?
Для сайта до 1000 URL создание маппинга, генерация конфига и проверка занимают от 2 до 5 рабочих дней. Стоимость рассчитывается индивидуально — зависит от сложности структуры и необходимости ручного сопоставления. Окупаемость инвестиций наступает в течение 2–3 месяцев за счёт сохранённого трафика.
Зачем заказывать эту услугу у нас?
Мы выполнили более 50 миграций сайтов на разные CMS — WordPress, Laravel, Django, 1C-Битрикс. Наши инженеры имеют более 5 лет опыта работы с редиректами на высоконагруженных проектах. Предоставляем гарантию: если после деплоя обнаружатся пропущенные редиректы — исправляем их бесплатно в течение месяца.
Свяжитесь с нами для бесплатной оценки объёма работ. Получите консультацию по миграции, и мы подготовим предварительный маппинг для вашего проекта.







