Миграция с Drupal 7 на Drupal 10: инструкция и практические примеры

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Миграция с Drupal 7 на Drupal 10: инструкция и практические примеры
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1250
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    956
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947

Drupal 7 больше не получает обновлений безопасности. Сайт под угрозой атак, а прямого пути к Drupal 10 нет — только полноценная миграция. Мы провели 20+ таких проектов: от 50 до 200 000 нод. Наш опыт позволяет обойти типичные ловушки и уложиться в минимальный downtime.

Migrate API ускоряет перенос контента в 3–5 раз по сравнению с ручной выгрузкой. Но миграция — это не только контент: кастомные модули и темы приходится переписывать полностью. Drupal 7 — процедурный и без Composer, Drupal 10 — OOP на Symfony с YAML-роутингом. Разница архитектур неизбежно приводит к полному рефакторингу кода.

Миграция с Drupal 7 на Drupal 10: пошаговая инструкция

Архитектурные различия: почему это не апгрейд

Drupal 7 и Drupal 10 — архитектурно разные системы. D7 не использует Composer, OOP, Symfony компоненты. Контент мигрируется через Migrate API, код тем и модулей переписывается полностью. Это полноценный рефакторинг, а не обновление. Например, hook_menu в D7 превращается в YAML-маршруты, а процедурные функции — в сервисы Dependency Injection.

Стратегии миграции: как выбрать?

Стратегия Описание Downtime Когда подходит
Migrate API Программная миграция контента из D7 БД в D10. Многократный запуск до переключения. Минуты Большинство проектов
Manual content migration Экспорт через Views, импорт через Migrate или вручную. Часы Сайты до 100 нод
Big bang Полная остановка D7, настройка D10, миграция за один раз. Дни Простые сайты, когда downtime допустим

Migrate API — рекомендуемый вариант. Он позволяет запускать миграции многократно, добавляя только изменившийся контент. Разница в трудозатратах между Migrate API и ручной миграцией составляет 3–5 раз в пользу автоматизации. Экономия бюджета при использовании Migrate API достигает 60-80%.

Как работает Migrate API под капотом? Migrate API использует плагины source, process, destination для каждой сущности. Source читает данные из D7 БД, process преобразует поля, destination сохраняет в D10. Это позволяет переиспользовать плагины и легко настраивать маппинг.

Как перенести кастомные модули?

Кастомные модули Drupal 7 нужно полностью переписывать под архитектуру Drupal 10. Например, hook_menu заменяется на YAML-файл mymodule.routing.yml, а процедурные функции — на классы с аннотациями. Сложность переписывания зависит от размера модуля. Часто требуется рефакторинг всей бизнес-логики. Закажите аудит вашего сайта, чтобы оценить трудоёмкость.

Как мы проводим миграцию: пошагово

Сначала проводим полный аудит текущего сайта. Заходим на сервер D7 и собираем метрики: список активных модулей, типы нод, размер БД. Затем на новом сервере разворачиваем Drupal 10 и устанавливаем пакеты миграции.

composer create-project drupal/recommended-project drupal10-site
cd drupal10-site
composer require drupal/migrate_plus drupal/migrate_tools drupal/migrate_upgrade drupal/migrate_source_csv
drush en migrate migrate_plus migrate_tools migrate_upgrade -y

Подключаем базу D7 как дополнительную в settings.php:

$databases['migrate']['default'] = [
    'driver'   => 'mysql',
    'database' => 'drupal7_db',
    'username' => 'db_user',
    'password' => 'db_pass',
    'host'     => '127.0.0.1',
    'port'     => '3306',
    'prefix'   => '',
];

Команда drush migrate:upgrade генерирует YAML-конфигурации для пользователей, таксономии, типов контента, полей, нод, файлов, блоков и меню. Затем миграции запускаются в порядке зависимостей: сначала роли, потом типы контента, поля, таксономия, пользователи, файлы, ноды, меню и блоки.

drush migrate:import upgrade_d7_user_role
drush migrate:import upgrade_d7_node_type
drush migrate:import upgrade_d7_field
drush migrate:import upgrade_d7_field_instance
drush migrate:import upgrade_d7_taxonomy_vocabulary
drush migrate:import upgrade_d7_taxonomy_term
drush migrate:import upgrade_d7_user
drush migrate:import upgrade_d7_file
drush migrate:import upgrade_d7_node_complete
drush migrate:import upgrade_d7_menu
drush migrate:import upgrade_d7_block

Проблемные зоны и их решения

  • CCK/Field API: Field Collection в D7 не мигрируется напрямую — нужен модуль migrate_field_collection.
  • Views: Views 3 (D7) переносятся частично. Сложные представления с relationships придется пересоздавать вручную.
  • Медиафайлы: Файлы копируются через file_copy плагин, источник указывается как source_base_path.

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

Как минимизировать downtime?

Используем дельта-миграцию. За несколько дней до переключения запускаем первичную миграцию всего контента. В день переключения сначала включаем режим обслуживания на D7, затем запускаем инкрементальное обновление: drush migrate:import --all --update. После этого переключаем DNS на D10 и отключаем режим обслуживания. Весь downtime — 15-30 минут. Свяжитесь с нами для оценки вашего проекта.

Что входит в работу?

  • Полный аудит текущего D7-сайта (модули, темы, контент, DB)
  • Миграция контента через Migrate API с гарантией целостности
  • Переписка кастомных модулей и тем на OOP/Symfony
  • Настройка SEO-модулей (metatag, redirect, pathauto)
  • Тестовая миграция и приемочное тестирование
  • Документация по новой архитектуре, доступы к серверу и админке
  • Пост-миграционная поддержка на 2 недели

Закажите аудит D7-сайта, чтобы получить точные сроки и стоимость.

Сроки и стоимость

Тип сайта Срок
Простой (< 100 нод, стандартные типы) 2-3 недели
Средний (500-5000 нод, кастомные модули) 4-8 недель
Крупный (50k+ нод, сложные зависимости) 3-6 месяцев

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

Редизайн и миграция сайта: смена CMS, сохранение SEO

Клиент пришёл через 6 недель после самостоятельного редизайна: «Мы переехали с WordPress на Tilda, трафик упал на 70%». Открываю Google Search Console — 847 страниц отдают 404, URL-структура полностью изменилась, не было ни одного 301-редиректа. Яндекс ещё не переиндексировал новый сайт, позиции рухнули. Восстановление заняло 4 месяца и обошлось в потерю выручки около 2 млн рублей за квартал. Наш опыт — более 7 лет и 80+ успешных миграций, гарантируем сохранение позиций при правильном подходе.

Почему миграции ломают SEO

Поисковики проиндексировали конкретные URL. Если /catalog/shoes/nike-air-max-270 превратился в /products/nike-air-max-270 без 301-редиректа — весь ссылочный вес страницы, весь трафик, все позиции уходят в никуда. Google говорит, что 301 передаёт ~99% PageRank, но на практике позиции восстанавливаются за 2–8 недель, а не мгновенно.

Чаще всего SEO ломают не из злого умысла, а потому что разработчик не думает о URL-структуре как о публичном API. Вот типичные поломки:

Проблема Причина Решение
Дублированный контент Новый сайт открывается параллельно со старым Отключить индексацию dev-версии, настроить canonical
Потеря метаданных Title и description остались в старой CMS Экспорт через API, массовый импорт с проверкой
Изменение canonical Пагинация и фильтры сбросились Зафиксировать до разработки, внедрить в шаблон
Скорость просела Тяжёлые секции, неоптимизированные изображения Оптимизировать LCP, CLS, TTFB до запуска

Как восстановить трафик после неудачной миграции?

Если трафик упал — действуйте немедленно:

  1. Краул нового сайта на 404 и сравнение с предмиграционным списком URL.
  2. Создание редиректов для всех потерянных страниц с трафиком >0.
  3. Проверка структурированных данных и мета-тегов на тестовой выборке.
  4. Ежедневный мониторинг Coverage в Search Console и позиций по топ-50 запросам.
  5. Если спустя 2 недели трафик не восстанавливается — глубокий аудит редиректов (транзитивность, цепочки, циклы).

В нашей практике такой случай: крупный интернет-магазин потерял 50% трафика при переезде с Битрикса на React + Strapi. За три дня восстановили 95% редиректов, через 3 недели трафик вернулся на 90% от исходного.

Предмиграционный аудит: что нельзя пропустить

До начала разработки нового сайта нужно:

  1. Полный краул текущего сайта через Screaming Frog или Sitebulb. Получить список всех индексируемых URL с трафиком из Google Search Console.
  2. Выгрузить все страницы с органическим трафиком >0 за последние 6 месяцев — это приоритет для редиректов.
  3. Зафиксировать все внешние ссылки (backlinks) на конкретные страницы — Ahrefs, Semrush.
  4. Сфотографировать текущие позиции по ключевым запросам — база для сравнения после миграции.
  5. Сохранить Core Web Vitals из Search Console за предыдущие 90 дней.

Таблица для фиксации:

Этап аудита Инструмент Критичность
Сбор URL Screaming Frog + GSC Высокая
Трафик по страницам Google Analytics / Search Console Высокая
Внешние ссылки Ahrefs / Majestic Средняя
Позиции Яндекс.Wordstat / Serpstat Средняя
Core Web Vitals GSC CrUX Высокая

Свяжитесь с нами для детального предмиграционного аудита — мы поможем выявить все риски и составить план действий.

Маппинг URL и редиректы

Для проекта с 200+ страницами создаём таблицу маппинга: старый URL → новый URL → статус (301, объединён с другой страницей, удалён). Каждая строка проходит проверку: реально ли контент переехал именно сюда.

В Laravel редиректы через конфигурационный файл и middleware, не через .htaccess — это быстрее и управляемо. Для WordPress → Next.js: редиректы настраиваются в next.config.js (статические) и на уровне Nginx/CDN для динамических. Старый .htaccess на shared хостинге с 500+ строками редиректов — особый ад. Каждый редирект проверяется последовательно, производительность падает. Переносим в Nginx map директиву или Redis-кэш для динамического поиска. Подробнее в Wikipedia: HTTP 301.

Миграция контента из разных CMS

WordPress → Headless CMS (Contentful, Strapi, Sanity):
WordPress REST API или WP All Export для экспорта постов, метаполей, медиафайлов. Скрипт миграции на Node.js: парсим экспорт, трансформируем структуру, загружаем через API CMS. Медиафайлы перегружаем в новое хранилище, обновляем ссылки в контенте. Типичная проблема — shortcodes в контенте WordPress ([gallery id="123"]): нужен парсер и трансформация в новый формат.

1С-Битрикс → современный стек:
Битрикс хранит контент в нестандартных таблицах с IBLOCK_ELEMENT_PROPERTY. Прямой SQL-экспорт через phpMyAdmin или Bitrix API. Трансформация — самая долгая часть из-за специфики структуры данных Битрикса.

Тяжёлые WYSIWYG → структурированный контент:
Годы редактирования в FCKEditor/TinyMCE оставляют inline-стили, нестандартные теги, сломанные атрибуты. HTML sanitize + трансформация в Markdown или Portable Text (Sanity) с ручной проверкой проблемных страниц.

CMS Инструменты миграции Сложность Риски
WordPress WP All Export, WP-CLI, REST API Средняя Shortcodes, meta fields
1C-Битрикс Bitrix API, SQL-экспорт Высокая Сложная структура, свойства инфоблоков
Joomla J2XML, прямая выгрузка из БД Высокая Устаревшие расширения
Tilda/Readymag Экспорт через API (ограничен) Средняя Нет полного доступа к контенту

SEO-сохранение технических элементов

Структурированные данные (Schema.org) — если на старом сайте были Product, Article, BreadcrumbList разметки, они должны быть и на новом. Google Search Console → Enhancement reports покажут потерю rich snippets.

Sitemap XML: генерируется автоматически, отправляется в GSC через день после запуска. Старый sitemap остаётся до полной переиндексации.

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

Open Graph и Twitter Card мета-теги — часто забывают при смене шаблона, страницы перестают корректно отображаться при шаринге в соцсетях.

Запуск и мониторинг первых недель

DNS propagation: переключение DNS занимает до 48 часов, планируйте запуск с запасом. Cloudflare как DNS-провайдер — propagation занимает минуты, не часы.

После запуска ежедневно мониторим: Search Console → Coverage (ошибки индексации), Analytics → органический трафик, сравнение с аналогичным периодом прошлого года, краулинг сайта на 404-ошибки.

Первые 2 недели — критический период. Если трафик падает на 30%+ — немедленный аудит редиректов и сравнение с предмиграционным краулом.

Чек-лист на запуск (спойлер)
  • [ ] Все 301 редиректы работают и не образуют цепочек
  • [ ] Sitemap отправлен в GSC и Яндекс.Вебмастер
  • [ ] Прописаны canonical на всех страницах
  • [ ] Проверено отображение Open Graph / Twitter Card
  • [ ] Скорректированы robots.txt и мета-теги noindex
  • [ ] Core Web Vitals в зелёной зоне (LCP <2.5s, CLS <0.1, INP <200ms)

Что входит в работу

Результаты, которые вы получаете:

  1. План миграции с маппингом URL и редиректов в формате Excel/Google Sheets.
  2. Настроенные 301 редиректы на серверном уровне (Nginx/Cloudflare/Vercel).
  3. Перенесённый контент с проверкой целостности: изображения, мета-поля, ссылки.
  4. Структурированные данные (Schema.org) на новом сайте, идентичные старым или улучшенные.
  5. Отчёт по SEO: динамика позиций через 1, 3 и 6 недель после запуска.
  6. Мониторинг Coverage в Search Console с уведомлениями об ошибках.
  7. Гарантия сохранения позиций: если трафик падает более чем на 15% в течение первого месяца — бесплатный аудит и коррекция.

Сроки и ориентиры

  • Редизайн с миграцией небольшого сайта (до 100 страниц): 4–8 недель.
  • Миграция e-commerce с 500+ страниц товаров: 8–16 недель.
  • Только техническая часть миграции (редиректы, метаданные) без редизайна: 1–3 недели.

Стоимость рассчитывается индивидуально по объёму. Средняя экономия клиента за счёт сохранения трафика после миграции — от 300 000 до 500 000 рублей в год.

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