Данный подход скорее полезен как демонстрация инструментария, чем действительно реализация редиректа на основной домен. Потому что лучше это делать средствами сервера, а не ПО, чтобы уменьшить нагрузку на сервер.
Drupal 8 работает на базе симфонии, а та реализует т.н. очередь событий ядра, которые возникают в течении процесса обработки запроса (request).
Во 2й версии Symfony доступны следующие события ядра:
- KernelEvents::CONTROLLER — Возникает, когда найден контроллер для обработки запроса
- KernelEvents::EXCEPTION — …, когда случается EXCEPTION, у которого нет обработки.
- KernelEvents::FINISH_REQUEST — …, когда ответ на запрос уже сформирован и готов к отправке.
- KernelEvents::REQUEST — … в самом начале получения запроса.
- KernelEvents::RESPONSE — … сразу после создания ответа на запрос.
- KernelEvents::TERMINATE — … как только ответ был отправлен.
- KernelEvents::VIEW — …, если возвращаемое значение контроллера не является экземпляром Response.
Нам нужно зацепиться за KernelEvents::REQUEST, чтобы сформировать требуемый редирект. Реализуется это через создание подписки на события.
В исходниках вашего модуля (/src) добавьте следующий класс src/EventSubscriber.php: