Как плагин 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.
Нужна нестандартная логика редиректов?
Разработаем кастомный плагин под вашу архитектуру. Обсудим задачу и предложим решение.
Обсудить задачу →




Messenger Max