Reemake Digital Agency · Технический разбор

Как плагин Redirect Mirror перехватывает запросы на onAfterInitialise

Плагин работает на событии onAfterInitialise — самом раннем этапе загрузки Joomla. Это даёт минимум нагрузки и максимальную скорость. Разбираем, как это устроено и почему это быстрее и безопаснее .htaccess.

Событийная модель Joomla

Когда срабатывает onAfterInitialise

Joomla загружается в несколько этапов. Событие onAfterInitialise срабатывает после загрузки конфигурации, БД и роутера, но до того, как определится компонент и начнётся рендер.

Минимум нагрузки

Плагин не грузит шаблон и не делает лишних запросов. Только проверка домена и выдача 301.

Раньше рендера

Редирект выдаётся до генерации HTML. Пользователь не видит мигания страниц.

До компонентов

Плагин работает раньше, чем любой сторонний компонент успевает вмешаться.

Изоляция ошибок

Если настройки невалидные — плагин тихо игнорирует их, сайт продолжает работать.

Код

Как это выглядит внутри плагина

public static function getSubscribedEvents(): array
{
    return [
        'onAfterInitialise' => 'onAfterInitialise',
    ];
}

public function onAfterInitialise(): void
{
    try {
        $app = Factory::getApplication();
        $host = $app->getInput()->server->getString('HTTP_HOST', '');
        // проверка домена, формирование редиректа
    } catch (\Throwable $e) {
        // тихо игнорируем, сайт работает дальше
    }
}

Никаких лишних зависимостей — только Factory, Uri и HTTP-заголовки. На PHP 8.3 это работает быстрее .htaccess с 20+ условиями.

Сравнение

Скорость: плагин vs .htaccess

Apache перечитывает .htaccess на каждый запрос и прогоняет все правила через mod_rewrite. При сложной логике это добавляет 5–20 мс к TTFB.

Плагин Redirect Mirror делает одну проверку домена на PHP и сразу отдаёт 301 — без запуска Apache-модулей и парсинга десятков RewriteRule. На больших нагрузках экономия заметна.

Вопросы и ответы

Частые вопросы

Можно ли через плагин делать редиректы отдельных страниц?
Да, через карту редиректов «старый URL → новый URL» в настройках. Для массовых правил — CSV-импорт.

Что если плагин конфликтует с другим редиректом?
Приоритет настраивается в Система → Плагины → Порядок. Redirect Mirror ставим первым — он перехватывает запрос раньше остальных.

Что если настройки плагина сломались?
Плагин оборачивает всё в try-catch. Ошибка логируется, но сайт продолжает работать. Это защита от падения с 500.

Можно ли посмотреть, какие редиректы сработали?
Да, включается логирование в настройках. Каждый редирект пишется в лог Joomla с host, from, to, ip, user-agent.

Нужна нестандартная логика редиректов?

Разработаем кастомный плагин под вашу архитектуру. Обсудим задачу и предложим решение.

Обсудить задачу →
8 (950) 442-49-00 reemake@inbox.ru Max Messenger Max

с 8:00 до 20:00 (МСК)

г. Пермь