Миграция с Joomla на Laravel
без потери данных и трафика
Joomla держится на расширениях сторонних авторов: часть из них заброшена, часть несовместима с новыми версиями PHP, а переход между мажорными версиями Joomla сам по себе превращается в отдельный проект.
Переносим сайт на Laravel: материалы и категории становятся моделями, данные расширений — нормальной схемой, а обновления перестают быть событием с риском уронить сайт.
Посмотрим вашу систему, данные и интеграции. Скажем, сколько это займёт, что переносится, а что придётся делать заново.
Ответ 15 мин
Почему уходят
Joomla: что перестаёт устраивать
Каждый пункт — не «мода на новый фреймворк», а конкретная проблема, которая стоит денег
или времени. Проверьте, сколько из них про вас.
01
Расширения без поддержки
Компоненты, модули и плагины писались годами разными авторами: часть заброшена, часть не работает на новых версиях PHP, а обновление ломает сайт.
Что делаем: Функциональность расширений реализуем своим кодом, данные переносим. Остаются только зависимости, которые мы контролируем и обновляем.
02
Обновление Joomla = отдельный проект
Переход между мажорными версиями требует миграции расширений и шаблона, поэтому сайты годами остаются на старых ветках с известными уязвимостями.
Что делаем: В Laravel обновление фреймворка не переписывает приложение: бизнес-логика отделена, а релизы проверяются тестами.
03
Скорость страдает от расширений
Каждое расширение добавляет свои запросы и запросы-дубли; страница собирается из десятков обращений к базе, а кеш маскирует проблему.
Что делаем: Проектируем запросы и индексы под реальные страницы, убираем лишние обращения, добавляем кеш и CDN для статики.
04
Мультиязычность через копии
Языковые версии часто сделаны дублями материалов, поэтому контент расходится, а структура адресов запутывается.
Что делаем: Языковые версии — это одно содержимое с локализованными полями, а не копии. Менеджер правит один материал вместо двух.
05
Админка неудобна для контента
Материалы, модули и меню живут в разных разделах: чтобы поменять блок на странице, нужно понимать структуру модулей и позиций шаблона.
Что делаем: Админка собирается под задачи редакции: страницы, блоки, предпросмотр, роли. Правка контента не требует разработчика.
06
VirtueMart и K2 тянут назад
Магазин или каталог на VirtueMart, контент на K2 — оба расширения устарели, а данные в них хранятся в собственных таблицах без нормальной схемы.
Что делаем: Каталог и контент переносим в нормализованную схему Laravel: товары, категории, заказы, материалы и связи между ними.
Карта переноса
Что переносим: Joomla → Laravel
Переносится не «сайт», а данные, логика и связи между ними. Ниже — что именно
описывается и переносится, чтобы новая система работала как старая, только быстрее.
Контент
Материалы и категории
Меню и структура разделов
Медиафайлы и галереи
Контакты и формы
Мультиязычные версии
Каталог (VirtueMart и аналоги)
Товары и категории
Цены и скидки
Заказы и покупатели
Производители
Отзывы
Данные расширений
K2-материалы и поля
Каталоги и справочники
Формы и заявки
Пользователи и права
SEO
SEF-адреса и карта URL
Метаданные и заголовки
Sitemap и robots
Микроразметка
Редиректы и старые адреса
Честно
Что не переносится один в один
Мы не обещаем «то же самое, только на Laravel»: часть вещей переносится смыслом,
а не кодом. Об этом лучше знать до старта, чем обнаружить в процессе.
Расширения один в один: данные переносим, код пишем заново под ваши процессы.
Шаблон и позиции модулей: собираем чистую вёрстку, похожую визуально.
Структуру таблиц Joomla и VirtueMart: схема проектируется заново.
Механизм мультиязычности через дубли материалов.
Устаревшие библиотеки и версии PHP, которые уже не поддерживаются.
Риски
Joomla: риски и как мы их закрываем
У каждой системы свои ловушки. Мы называем их заранее и описываем, как закрываем —
до того, как они превратятся в сюрприз в середине проекта.
Данные в расширениях
K2 и VirtueMart хранят контент в своих таблицах, часто с дублями. Разбираем схему и связи перед переносом.
SEF-адреса и дубли
У материалов бывает несколько адресов и алиасов. Собираем карту URL из базы и логов, закрываем редиректами.
Мультиязычность
Если она сделана копиями, нужно решить, какая версия источник правды. Уточняем с редакцией до переноса.
Заявки и формы
История форм обычно не сохраняется. Переносим то, что есть, и сразу настраиваем попадание заявок в CRM.
План
Как проходит миграция
Шесть этапов, каждый заканчивается проверяемым результатом. Бизнес продолжает работать:
старый контур не выключается, пока новый не докажет, что считает и отдаёт данные правильно.
011–3 недели
Аудит и карта системы
Разбираем текущую систему: схема данных, точки входа, интеграции, задачи по расписанию, реальные бизнес-правила. На выходе — карта системы и оценка объёма.
022–3 недели
Архитектура и план переноса
Проектируем схему данных на Laravel, выбираем стратегию перехода, описываем этапы, критерии приёмки и план по SEO-редиректам.
032–6 недель
Стенд и перенос данных
Поднимаем новый контур, переносим данные, сверяем суммы, связи и справочники. Разрабатываем модули, начиная с тех, что дают деньги.
04по ситуации
Параллельная работа
Новый и старый контуры работают одновременно: разделы переключаются по одному после сверки. Пользователи не замечают переезда.
052–5 дней
Переключение трафика
Переводим домен, включаем 301-редиректы по карте URL, проверяем sitemap, счётчики и цели. Контролируем индексацию и ошибки.
062–4 недели
Стабилизация и передача
Следим за метриками, правим найденное, обучаем команду, передаём документацию, доступы и регламенты.
Особенности плана: Joomla
Инвентаризация расширений — первый шаг: для каждого решаем, реализуем нативно, заменяем сервисом или отказываемся.
Контент переносим с ручной выборочной проверкой: в Joomla часто встречается разметка из редактора разных лет.
Каталог (если есть) переносим отдельным этапом со сверкой цен и заказов.
Адреса закрываем редиректами до переключения трафика, а не после.
SEO и трафик
Трафик из поиска не должен просесть
Главный страх при переезде — потерять позиции. Поэтому SEO-часть мы делаем до переключения
и контролируем после, а не «посмотрим, что будет».
Карта URL до переезда
Собираем все адреса старой системы из базы, sitemap и логов: карточки, категории, пагинация, фильтры, старые ЧПУ.
301-редиректы 1:1
Совпадающие адреса сохраняем, остальные закрываем постоянными редиректами — без «главной страницы вместо товара».
Метаданные и заголовки
Переносим title, description, H1 и тексты, а не генерируем заново: поиск уже знает эти страницы.
Микроразметка
Товары, хлебные крошки, отзывы, FAQ — разметка сохраняется и валидируется заново на новом контуре.
Sitemap и robots
Актуальная карта сайта, корректные правила обхода, отсутствие закрытых от индексации нужных страниц.
Счётчики и цели
Метрика, аналитика, цели и события переносятся и проверяются до переключения, чтобы не потерять статистику.
Мониторинг после релиза
Следим за ошибками 404/500, индексацией и позициями первые недели — редиректы и обход проверяются на живом трафике.
Стек
На что переводим: Laravel и вокруг
Открытые технологии без лицензий. Стек подобран так, чтобы систему могла развивать
любая PHP-команда, а не только её автор.
Интерфейсы без перезагрузок: админка, таблицы, формы, фильтры.
PostgreSQL или MySQL
Нормализованная схема, индексы под реальные запросы, реплики для отчётов.
Redis
Кеш, сессии и очереди вместо файлового кеша и cron-скриптов.
Horizon и очереди
Фоновые задачи с повторами, приоритетами и мониторингом.
Тесты и CI/CD
Покрытие критичных сценариев, отдельные окружения, релизы и откаты в одну команду.
Наблюдаемость
Логи, метрики и алерты: видно ошибки и деградацию до жалоб пользователей.
API и интеграции
Явные контракты обмена с 1С, платежами, доставкой, CRM и маркетплейсами.
Когда миграция не нужна
Мы не берём проект, если переход не окупается: иногда дешевле починить текущую систему
или обновить её. Честный ответ экономит вам бюджет.
Сайт на актуальной Joomla с минимумом расширений и без кастомной логики.
Планируется только визуальное обновление шаблона.
Функциональность устраивает и развивать её не планируется.
Форматы работ
Как можно начать
Можно взять только аудит и план — и внедрять своими силами. Можно мигрировать этапами.
Можно переписать систему целиком. Выбор зависит от состояния кода и от того, сколько бизнес
готов ждать.
Аудит и план миграции
Нужно понять объём работ, риски и стоимость до принятия решения.
Карта системы и данных
Схема данных на Laravel
План этапов и критерии приёмки
План SEO-редиректов
Оценка сроков и бюджета
фиксированная стоимостьАудит можно внедрять своими силами
С любой: 1.5, 2.5, 3.x и 4.x. Разница в объёме работы: чем старее версия, тем больше расширений и тем выше шанс, что часть данных придётся восстанавливать по таблицам расширений. На аудите мы смотрим структуру базы и список компонентов.
Что будет с VirtueMart?
Товары, категории, цены, заказы и покупатели переносятся в нормализованную схему Laravel. Логика расчёта, доставки и скидок описывается заново под ваши правила: в VirtueMart она собрана из настроек и плагинов, и «как было» не всегда означает «как нужно».
Как переносится мультиязычный сайт?
Мы отказываемся от дублей материалов: одна сущность с локализованными полями и правильным hreflang. Это убирает расхождения между языковыми версиями и упрощает правки: вместо двух материалов редактор ведёт один. Адреса языковых версий сохраняем или закрываем редиректами.
Сохранятся ли позиции в поиске?
Да, при переносе адресов. Мы собираем карту URL из базы Joomla и логов, сохраняем совпадающие адреса и закрываем 301-редиректами остальные, включая адреса пагинации, категорий K2 и карточек VirtueMart. После переключения контролируем индексацию и позиции.
Сколько времени занимает переезд с Joomla?
Аудит и карта данных — 1–2 недели, проектирование схемы — 2–3 недели, перенос и разработка разделов — от 8 недель, переключение и стабилизация — 2–3 недели. Срок зависит от числа расширений с данными и объёма каталога.
Как переносится база данных при миграции?
Схема переносится целиком, включая историю операций: заказы, платежи, заявки, справочники. Перед переносом проверяем целостность данных и чистим дубли. На новом контуре схема нормализуется: появляются типы, ограничения и внешние ключи, которые не дают создавать несогласованные записи. Сверку делаем выборочно вручную по ключевым таблицам, а не только отчётом из скрипта.
Как гарантируется, что трафик из поиска не просядет?
Карта URL собирается до переезда: из базы, sitemap и логов сервера. Совпадающие адреса сохраняются один в один, остальные закрываются 301-редиректами. Метаданные, заголовки и микроразметка переносятся, а не генерируются заново. После переключения мы следим за ошибками, индексацией и позициями — обычно это 2–4 недели наблюдения.
Что происходит с интеграциями: 1С, платежи, доставка, CRM?
Каждая описывается до разработки: что передаётся, как часто, что считается успехом и как видеть ошибки. В новой системе обмены становятся явными: журнал синхронизации, повторные попытки, алерты. Платёжные модули подключаем на тестовых аккаунтах до переключения трафика.
Можно ли обойтись без полного переноса?
Да. Варианты: укрепить текущую систему (закрыть уязвимости, добавить тесты, навести порядок в бэкапах), вынести отдельный модуль на Laravel и связать через API или шину, либо рефакторить по частям. На аудите мы говорим прямо, какой путь дешевле — иногда это отказ от полного переноса.
Сколько стоит миграция?
Стоимость зависит от объёма данных, числа интеграций, количества кастомной логики и требований к сохранению SEO. Аудит и план миграции фиксируются по цене заранее, дальше проект считается этапами с понятным результатом на каждом. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных, истории и трафика.
Что будет с сотрудниками, которые работают в старой системе?
Мы меняем систему, а не процессы: админка собирается под их задачи, а обучение входит в проект. Обычно новая админка нравится больше: понятные формы, живые таблицы, отчёты без участия разработчика. Для сложных мест пишем короткие инструкции.
Кому принадлежат код и данные после миграции?
Вам. Код, схема данных, документация, доступы и инфраструктура оформляются на вас с самого начала. Мы не удерживаем проект в своём контуре: его можно передать другой команде, а документация описывает систему так, чтобы ей мог заняться любой PHP-разработчик.
Что нужно от нас для старта?
Доступ к исходному коду и базе данных (или их копиям), список интеграций и сервисов, контакт человека, который знает бизнес-логику и процессы, и данные о том, что критично не потерять при переезде. Дальше мы работаем сами и показываем промежуточные результаты.
Следующий шаг
Разберём вашу систему
Посмотрим код, базу и интеграции. Скажем, что переносится, что придётся делать заново,
сколько это займёт и как сохранить трафик. Без обязательств.
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie
(Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия —
от него можно отказаться. Подробнее:
Политика использования cookie
и
обработка персональных данных.
Настройки cookie
Выберите, какие категории cookie можно использовать. Необходимые отключить нельзя:
без них не работают формы и сессия.