Миграция с CodeIgniter на Laravel
без потери данных и трафика
CodeIgniter 2 и 3 — это PHP 5, сырые SQL-запросы, самописные хелперы и отсутствие нормальной структуры: проект работает, но развивать его с каждым годом дороже.
Переносим приложение на Laravel: появляются модели, миграции, тесты, очереди и админка, а база данных со всей историей переезжает без потерь.
Посмотрим вашу систему, данные и интеграции. Скажем, сколько это займёт, что переносится, а что придётся делать заново.
Ответ 15 мин
Почему уходят
CodeIgniter: что перестаёт устраивать
Каждый пункт — не «мода на новый фреймворк», а конкретная проблема, которая стоит денег
или времени. Проверьте, сколько из них про вас.
01
Код без фреймворка внутри фреймворка
CodeIgniter даёт минимум: маршруты, контроллеры и загрузчик. Всё остальное — самописные библиотеки и хелперы, которые никто не документировал.
Что делаем: Переносим функциональность на стандартные средства Laravel: сервисы, модели, очереди, события. Код становится понятным любому PHP-разработчику.
02
Сырые SQL повсюду
Запросы собираются строками прямо в контроллерах: их сложно менять, они не экранируют данные и дублируются десятками копий.
Что делаем: Переводим работу с данными в Eloquent и построитель запросов, а сложные выборки — в отдельные репозитории с тестами.
03
Нет тестов и окружений
Правки делают сразу на боевом сервере, откат — из бэкапа. Любое изменение превращается в риск, поэтому задачи откладывают.
Что делаем: Настраиваем окружения, покрываем критичные сценарии тестами, релизы выходят через CI/CD и откатываются в одну команду.
04
Уязвимости старого кода
Отсутствие CSRF-защиты, экранирования и обновлений зависимостей — типичный набор для проекта на CodeIgniter 2.
Что делаем: Laravel даёт защиту от CSRF, XSS и SQL-инъекций по умолчанию, а зависимости обновляются через менеджер пакетов.
05
Нет админки и отчётов
Админка — это набор страниц, которые писали под конкретную задачу. Новый отчёт или фильтр требует разработки с нуля.
Что делаем: Админка на Livewire с живыми таблицами, фильтрами, массовыми действиями и ролями. Новые отчёты собираются из готовых компонентов.
06
Разработчиков всё меньше
Найти специалиста по CodeIgniter 2 сложно, а разбираться в самописной архитектуре никто не хочет: поддержка держится на авторе проекта.
Что делаем: Laravel — массовая технология с документацией и сообществом: проект можно передать любой команде, а не только автору.
Карта переноса
Что переносим: CodeIgniter → Laravel
Переносится не «сайт», а данные, логика и связи между ними. Ниже — что именно
описывается и переносится, чтобы новая система работала как старая, только быстрее.
Логика
Контроллеры — в сервисы и действия
Модели — в Eloquent
Хелперы — в классы и хелперы Laravel
Библиотеки — в пакеты и сервисы
Права доступа — в политики
Данные
Схема базы и связи
Справочники и словари
История операций
Пользователи и роли
Загруженные файлы
Интеграции
Платёжные системы
Внешние API
Почта и уведомления
Обмены с учётными системами
SEO и публичная часть
Адреса и ЧПУ
Метаданные и заголовки
Sitemap и robots
Редиректы и старые адреса
Честно
Что не переносится один в один
Мы не обещаем «то же самое, только на Laravel»: часть вещей переносится смыслом,
а не кодом. Об этом лучше знать до старта, чем обнаружить в процессе.
Самописные библиотеки и хелперы: их функции реализуются штатными средствами Laravel.
Структура каталогов и файлов CodeIgniter: приложение проектируется по стандартам Laravel.
Старые версии PHP-библиотек: заменяются поддерживаемыми аналогами.
Реализация авторизации и сессий: используется штатный механизм фреймворка.
Шаблоны с вставками PHP: заменяются Blade-шаблонами.
Риски
CodeIgniter: риски и как мы их закрываем
У каждой системы свои ловушки. Мы называем их заранее и описываем, как закрываем —
до того, как они превратятся в сюрприз в середине проекта.
Логика в SQL-запросах
Бизнес-правила могут быть спрятаны в сложных запросах. Разбираем их и переносим в сервисы с тестами.
Отсутствие документации
Поведение восстанавливаем по коду, базе и вопросам сотрудникам; спорные места согласуем до разработки.
Данные с расхождениями
Старый код мог писать данные непоследовательно. Проверяем целостность до переноса и чистим справочники.
Скрытые интеграции
Часть обменов запускается кроном и не описана. Инвентаризируем задачи, иначе обмен «отвалится» после переезда.
План
Как проходит миграция
Шесть этапов, каждый заканчивается проверяемым результатом. Бизнес продолжает работать:
старый контур не выключается, пока новый не докажет, что считает и отдаёт данные правильно.
011–3 недели
Аудит и карта системы
Разбираем текущую систему: схема данных, точки входа, интеграции, задачи по расписанию, реальные бизнес-правила. На выходе — карта системы и оценка объёма.
022–3 недели
Архитектура и план переноса
Проектируем схему данных на Laravel, выбираем стратегию перехода, описываем этапы, критерии приёмки и план по SEO-редиректам.
032–6 недель
Стенд и перенос данных
Поднимаем новый контур, переносим данные, сверяем суммы, связи и справочники. Разрабатываем модули, начиная с тех, что дают деньги.
04по ситуации
Параллельная работа
Новый и старый контуры работают одновременно: разделы переключаются по одному после сверки. Пользователи не замечают переезда.
052–5 дней
Переключение трафика
Переводим домен, включаем 301-редиректы по карте URL, проверяем sitemap, счётчики и цели. Контролируем индексацию и ошибки.
062–4 недели
Стабилизация и передача
Следим за метриками, правим найденное, обучаем команду, передаём документацию, доступы и регламенты.
Особенности плана: CodeIgniter
Начинаем с инвентаризации: маршруты, cron-задачи, интеграции и таблицы — карта системы до разработки.
Схему базы на первом этапе переносим как есть, нормализацию делаем отдельно.
Критичные сценарии (оплата, заявки, вход) покрываем тестами до переключения.
Старый контур держим на отдельном домене до стабилизации.
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 и маркетплейсами.
Когда миграция не нужна
Мы не берём проект, если переход не окупается: иногда дешевле починить текущую систему
или обновить её. Честный ответ экономит вам бюджет.
Проект маленький и работает стабильно без изменений — иногда достаточно обновить PHP и закрыть уязвимости.
Планируется замена системы готовым продуктом, а не собственной разработкой.
CodeIgniter 4 и объём кастомного кода небольшой: дешевле остаться и почистить.
Форматы работ
Как можно начать
Можно взять только аудит и план — и внедрять своими силами. Можно мигрировать этапами.
Можно переписать систему целиком. Выбор зависит от состояния кода и от того, сколько бизнес
готов ждать.
Аудит и план миграции
Нужно понять объём работ, риски и стоимость до принятия решения.
Карта системы и данных
Схема данных на Laravel
План этапов и критерии приёмки
План SEO-редиректов
Оценка сроков и бюджета
фиксированная стоимостьАудит можно внедрять своими силами
Да, но подход отличается: CI4 уже использует современные практики (пространства имён, Composer, миграции), поэтому часть кода переносится с меньшими изменениями. Часто в этом случае имеет смысл сначала обновить проект внутри CI4, а миграцию на Laravel делать позже — на аудите мы скажем, какой путь дешевле.
Что делать с самописными библиотеками?
Разбираем каждую: какую задачу она решает и есть ли штатное решение в Laravel или готовый пакет. Обычно 70–80% самописного кода заменяется стандартными средствами, а оставшееся становится сервисами с тестами.
Переносится ли база данных?
Да, со всей историей: схема, справочники, пользователи, заказы и операции. Перед переносом проверяем целостность данных — старый код мог писать их непоследовательно. Сверку делаем выборочно по ключевым таблицам.
Как быстро проект перестанет требовать автора?
Обычно уже на этапе аудита мы описываем систему так, чтобы в ней мог разобраться любой PHP-разработчик: карта модулей, схема данных, список задач по расписанию и интеграций. После переноса проект ведёт любая Laravel-команда.
Сколько это стоит?
Стоимость зависит от объёма кастомного кода, сложности интеграций и требований к данным. Аудит и карта системы фиксируются по цене заранее, дальше проект считается этапами. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных и трафика.
Как переносится база данных при миграции?
Схема переносится целиком, включая историю операций: заказы, платежи, заявки, справочники. Перед переносом проверяем целостность данных и чистим дубли. На новом контуре схема нормализуется: появляются типы, ограничения и внешние ключи, которые не дают создавать несогласованные записи. Сверку делаем выборочно вручную по ключевым таблицам, а не только отчётом из скрипта.
Как гарантируется, что трафик из поиска не просядет?
Карта URL собирается до переезда: из базы, sitemap и логов сервера. Совпадающие адреса сохраняются один в один, остальные закрываются 301-редиректами. Метаданные, заголовки и микроразметка переносятся, а не генерируются заново. После переключения мы следим за ошибками, индексацией и позициями — обычно это 2–4 недели наблюдения.
Что происходит с интеграциями: 1С, платежи, доставка, CRM?
Каждая описывается до разработки: что передаётся, как часто, что считается успехом и как видеть ошибки. В новой системе обмены становятся явными: журнал синхронизации, повторные попытки, алерты. Платёжные модули подключаем на тестовых аккаунтах до переключения трафика.
Можно ли обойтись без полного переноса?
Да. Варианты: укрепить текущую систему (закрыть уязвимости, добавить тесты, навести порядок в бэкапах), вынести отдельный модуль на Laravel и связать через API или шину, либо рефакторить по частям. На аудите мы говорим прямо, какой путь дешевле — иногда это отказ от полного переноса.
Сколько стоит миграция?
Стоимость зависит от объёма данных, числа интеграций, количества кастомной логики и требований к сохранению SEO. Аудит и план миграции фиксируются по цене заранее, дальше проект считается этапами с понятным результатом на каждом. По объёму работ миграция сопоставима с разработкой нового проекта — но с сохранением данных, истории и трафика.
Что будет с сотрудниками, которые работают в старой системе?
Мы меняем систему, а не процессы: админка собирается под их задачи, а обучение входит в проект. Обычно новая админка нравится больше: понятные формы, живые таблицы, отчёты без участия разработчика. Для сложных мест пишем короткие инструкции.
Кому принадлежат код и данные после миграции?
Вам. Код, схема данных, документация, доступы и инфраструктура оформляются на вас с самого начала. Мы не удерживаем проект в своём контуре: его можно передать другой команде, а документация описывает систему так, чтобы ей мог заняться любой PHP-разработчик.
Что нужно от нас для старта?
Доступ к исходному коду и базе данных (или их копиям), список интеграций и сервисов, контакт человека, который знает бизнес-логику и процессы, и данные о том, что критично не потерять при переезде. Дальше мы работаем сами и показываем промежуточные результаты.
Следующий шаг
Разберём вашу систему
Посмотрим код, базу и интеграции. Скажем, что переносится, что придётся делать заново,
сколько это займёт и как сохранить трафик. Без обязательств.
Мы используем необходимые cookie для работы сайта и форм. Аналитические cookie
(Яндекс.Метрика, включая запись сессий) подключаем только с вашего согласия —
от него можно отказаться. Подробнее:
Политика использования cookie
и
обработка персональных данных.
Настройки cookie
Выберите, какие категории cookie можно использовать. Необходимые отключить нельзя:
без них не работают формы и сессия.