Мультидоменность в 2.5 КАК?
Друзья, раньше мнгосайтовость получалась добавления в индекс.пхп:
htacess закоментировал, чтоб не путался, id первых страниц для контекстов прописал
Кто-нибудь в курсе, может поменялось чего в алгоритме? Вроде как site_url и base_url уже устарели. Да и http_host чего-то среди основных настроек не вижу.
switch ($modx->getOption('http_host')) {
case 'www.subdomain.blabla.ru:80':
case 'www.subdomain.blabla.ru':
$modx->initialize('bio');
break;
default:
$modx->initialize('web');
break;
}
Но теперь меня при наборе www.subdomain.blabla.ru перекидывает на основной контекст да еще и с адресом www.blabla.ruhtacess закоментировал, чтоб не путался, id первых страниц для контекстов прописал
Кто-нибудь в курсе, может поменялось чего в алгоритме? Вроде как site_url и base_url уже устарели. Да и http_host чего-то среди основных настроек не вижу.
Комментарии: 9
Сделал по инструкции для субдоменов — наблюдаю такое поведение:
domain.ru — отдается контекст 1
www.domain.ru — отдается контекст 1
sub.domain.ru — отдается контекст 2
www.sub.domain.ru — отдается контекст 1
При попытке раскомментировать
http_host и base_url прописывал без указания :8080, т.к. в этом случае отдает всегда только первый контекст
domain.ru — отдается контекст 1
www.domain.ru — отдается контекст 1
sub.domain.ru — отдается контекст 2
www.sub.domain.ru — отдается контекст 1
При попытке раскомментировать
#RewriteCond %{HTTP_HOST} .
#RewriteCond %{HTTP_HOST} !^www\.domain\.ru [NC]
#RewriteRule (.*) http://www.domain.ru/$1 [R=301,L]
просто перекидывает с субдомена на основной домен и соответственно отдает первый контекст.http_host и base_url прописывал без указания :8080, т.к. в этом случае отдает всегда только первый контекст
В плагине должны быть оба домена указаны, для которых требуется переключать контекст.
не понимаю, вот плагин
более того, ниже Василий пишет:
<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
// Выбираем контекст с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value' => $host));
$q->select('context_key');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
// Учитываем наш запрос в БД
$modx->queryTime += microtime(true) - $tstart;
$modx->executedQueries++;
// Получаем ключ контекста
if ($context = $q->stmt->fetch(PDO::FETCH_COLUMN)) {
// Web инициализируется в index.php - на него переключаться не нужно
if ($context != 'web') {
$modx->switchContext($context);
}
}
}
никаких доменов в нем не указывается.более того, ниже Василий пишет:
Можно добавлять сколько угодно контекстов — плагин менять не придётся.
Данный плагин рассчитан только на один домен для каждого контекста. В твоем случае необходимо использовать немного другой плагин: modx.ru/novosti-i-stati/article/91
Не переключает.
Причем если в плагине в строке с основным доменом заменить контекст web на контекст sub — отдаст sub
А дальше с субдоменом так же не отрабатывает.
Такое впечатление, что директива о смене контекста позже еще раз перекрывается директивой о возврате контекста web на место. Точно нигде больше ничего не нужно удалять? Может index.php как-то рубит всю малину своим
вот код
Причем если в плагине в строке с основным доменом заменить контекст web на контекст sub — отдаст sub
А дальше с субдоменом так же не отрабатывает.
Такое впечатление, что директива о смене контекста позже еще раз перекрывается директивой о возврате контекста web на место. Точно нигде больше ничего не нужно удалять? Может index.php как-то рубит всю малину своим
/* Initialize the default 'web' context */
$modx->initialize('web');
хотя нет. фигню порю. sub-то отдает по основному домену.вот код
<?php
if ($modx->event->name == 'OnHandleRequest') {
if ($modx->context->get('key') == 'mgr') {return;}
// сравнение текущего имени хоста и искомого
if (strstr($_SERVER['HTTP_HOST'], 'bla.ru') != false) {
$modx->switchContext('web');
return;
}
if (strstr($_SERVER['HTTP_HOST'], 'sub.bla.ru') != false) {
$modx->switchContext('sub');
return;
}
}
Поменяй местами блоки if.
обалдеть, работает. спасибо.
т.е. плагин считает, что запрос sub.bla.ru соответствует условию bla.ru?
но не наоборот.
т.е. плагин считает, что запрос sub.bla.ru соответствует условию bla.ru?
но не наоборот.
Все верно, так и должно быть. Смотрите, как работает функция strstr.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.