Как сделать редирект из плагина?

Друзья, памагитииии! Не хватает мозгов, есть плагин, который делает из URL поддомены, тут порядок. И сервер настроен, все поддомены смотрят на основной домен.
Плагин запускается на события OnHandleRequest и OnPageNotFound.

Вначале в цикле делаем список поддоменов из страниц, которые будут отображаться при переходе по ним. Все работает. Порядок. Если есть страница например site.ru/page то она откроется и ее контент по адресу page.site.ru.

Но вот засада, страница так же открывается и по старому адресу site.ru/page как теперь докрутить плагин так, что бы при переходе на страницу, был редирект на ее созданный поддомен?

Я думаю нужно получить ID и ALIAS текущей страницы, и сделать редирект на ее поддомен, но ничего не получается :(
пробовал так

$url = MODX_URL_SCHEME.$doc->get('alias').'.site.ru';
               $modx->sendRedirect($url);

Но ничего не получается :( редирект делается, НО страница page.site.ru куда делается редирект не работает, или ошибка 500 мол много переадресаций пишет. Я так понимаю редирект делается два раза, или еще что то. Пробовал даже на странице самой вызывать просто сниппет с редиректом, тоже беда. не работает 500 ошибка

$ids = $modx->resource->get('id');
$res = $modx->getObject('modResource', $ids);
$url = MODX_URL_SCHEME.$res->get('alias').'.site.ru';
$modx->sendRedirect($url);
Вот код самого плагина который делает поддомены, он простой. Вот как его докрутить что бы еще и редирект делал на поддомены со страниц для которых эти поддомены делает?

if(!$docs = $modx->getCollection('modResource', array(
    'parent' => 15,
    'published' => 1,
    'deleted' => 0,
    'searchable' => 1
))){return;}

$domains = [];
foreach ($docs as $doc) {
 $domains[$doc->get('alias').'.site.ru'] = $doc->get('id');
}

switch ($modx->event->name) {
    case 'OnHandleRequest':
        if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
            $modx->config['site_start'] = $domains[$_SERVER['HTTP_HOST';

     /*  $parent = $modx->resource->get('parent');
            if($parent === 15){
               $url = MODX_URL_SCHEME.$doc->get('alias').'.site.ru';
               $modx->sendRedirect($url); 
            }
*/
        }
        break;
    case 'OnPageNotFound':
        if (array_key_exists($_SERVER['HTTP_HOST'], $domains)) {
            $subdomain = array_shift(explode('.', $_SERVER['HTTP_HOST']));
            if ($id = $modx->findResource($subdomain.$_SERVER['REQUEST_URI'] , 'web')) {
                $modx->sendForward($id);
            }
        }
        break; 
}
Роман
26 ноября 2019, 17:08
modx.pro
1
645
0

Комментарии: 7

Сергей Шлоков
27 ноября 2019, 15:13
0
Кабы понять какая задача?
    Роман
    27 ноября 2019, 15:19
    0
    Плагин делает поддомены из страниц например из site.ru/page в page.site.ru НО при этом контент доступен по обоим адресам, я хочу сделать со страниц site.ru/page редирект на page.site.ru, не получается НИКАК. Ошибка 500, страница не найдена. При попытке сделать редирект. Вопрос, как сделать редирект в такой ситуации?
      Сергей Шлоков
      27 ноября 2019, 15:35
      0
      Вопрос в том, зачем такой изврат?
        Роман
        27 ноября 2019, 15:40
        0
        А как вы предлагаете делать? Как сделать из страниц поддомены и при этом сразу сделать с них редирект на их поддомены? Автоматически! Вы не сможете посоветовать, потому что решений нет. Есть только этот плагин. Но он не делает редирект со страниц на поддомены.
          Сергей Шлоков
          27 ноября 2019, 17:09
          0
          Почему нельзя сделать сразу поддомены?
            Роман
            27 ноября 2019, 17:13
            0
            Поддомены должны создаваться АВТОМАТИЧЕСКИ! ИЗ URL страниц из контейнера с id 15. Но с этим проблем нет, плагин это делает.
            Если вы про хостинг панель и руками создавать поддомены, это не вариант.
              Сергей Шлоков
              28 ноября 2019, 07:59
              0
              Но с этим проблем нет, плагин это делает.
              Да уж, проблем нет. 2 раза подряд слать один и тот же запрос в базу и поднимать объекты ресурсов. Хуже не придумаешь.

              $modx->config['site_start'] = $domains[$_SERVER['HTTP_HOST';
              Советую поставить какую-нибудь IDE с анализатором кода.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    7