Маппинг 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 лет опыта работы с редиректами на высоконагруженных проектах. Предоставляем гарантию: если после деплоя обнаружатся пропущенные редиректы — исправляем их бесплатно в течение месяца.
Свяжитесь с нами для оценки объёма работ. Получите консультацию по миграции, и мы подготовим предварительный маппинг для вашего проекта.







