Как сделать редирект из плагина?
Друзья, памагитииии! Не хватает мозгов, есть плагин, который делает из 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
Кабы понять какая задача?
Плагин делает поддомены из страниц например из site.ru/page в page.site.ru НО при этом контент доступен по обоим адресам, я хочу сделать со страниц site.ru/page редирект на page.site.ru, не получается НИКАК. Ошибка 500, страница не найдена. При попытке сделать редирект. Вопрос, как сделать редирект в такой ситуации?
Вопрос в том, зачем такой изврат?
А как вы предлагаете делать? Как сделать из страниц поддомены и при этом сразу сделать с них редирект на их поддомены? Автоматически! Вы не сможете посоветовать, потому что решений нет. Есть только этот плагин. Но он не делает редирект со страниц на поддомены.
Почему нельзя сделать сразу поддомены?
Поддомены должны создаваться АВТОМАТИЧЕСКИ! ИЗ URL страниц из контейнера с id 15. Но с этим проблем нет, плагин это делает.
Если вы про хостинг панель и руками создавать поддомены, это не вариант.
Если вы про хостинг панель и руками создавать поддомены, это не вариант.
Но с этим проблем нет, плагин это делает.Да уж, проблем нет. 2 раза подряд слать один и тот же запрос в базу и поднимать объекты ресурсов. Хуже не придумаешь.
$modx->config['site_start'] = $domains[$_SERVER['HTTP_HOST';
Советую поставить какую-нибудь IDE с анализатором кода.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.