Как сделать редирект из плагина?
Друзья, памагитииии! Не хватает мозгов, есть плагин, который делает из URL поддомены, тут порядок. И сервер настроен, все поддомены смотрят на основной домен.
Плагин запускается на события OnHandleRequest и OnPageNotFound.
Вначале в цикле делаем список поддоменов из страниц, которые будут отображаться при переходе по ним. Все работает. Порядок. Если есть страница например site.ru/page то она откроется и ее контент по адресу page.site.ru.
Но вот засада, страница так же открывается и по старому адресу site.ru/page как теперь докрутить плагин так, что бы при переходе на страницу, был редирект на ее созданный поддомен?
Я думаю нужно получить ID и ALIAS текущей страницы, и сделать редирект на ее поддомен, но ничего не получается :(
пробовал так
Но ничего не получается :( редирект делается, НО страница page.site.ru куда делается редирект не работает, или ошибка 500 мол много переадресаций пишет. Я так понимаю редирект делается два раза, или еще что то. Пробовал даже на странице самой вызывать просто сниппет с редиректом, тоже беда. не работает 500 ошибка
Плагин запускается на события 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;
} Комментарии: 7
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Если вы про хостинг панель и руками создавать поддомены, это не вариант.
Советую поставить какую-нибудь IDE с анализатором кода.