Два разных домена один сайт MODX

Александр, здравствуйте! Пытаюсь разобраться как правильно сделать языковую версию сайта при условии что у неё будет свой домен и в последующем остальные языковые версии сайта будут от неё, пример сайт.com/di/, от части всё получается, но не совсем всё понятно, устанавливаю Babel, создаю контекст eng прописываю в нём параметры для нового домена: Общие, ключ: eng Настройки контекста:
site_url: https://сайт.com
cultureKey: en
site_start: id главной страницы контекста eng
Для контекста web указываю аналогичные параметры, но со своими значениями, после этого копирую папку сайт.ru с установленным Модх и файлами, называю её сайт.com, далее всё работает, контексты переключаются, всё бы хорошо, если это были бы разные сайты, но в данном случае сайт один а папки с одинаковым содержимым получается две, подскажите пожалуйста, как можно домену сайт.com использовать файлы основного домена, папки сайт.ru?

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

Александр Мальцев
Александр Мальцев
Вам необходимо правильно сконфигурировать файл .htaccess.
Например, при использовании Babel используют следующее:
# сменим виртуальные пути на реальные
 
# redirect all requests to /en/favicon.ico  to /favicon.ico
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en|ru|de)/favicon.ico$ favicon.ico [L,QSA]
 
# redirect all requests to /en/assets* to /assets*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(en|ru|de)/assets(.*)$ assets$2 [L,QSA]
 
# redirect all other requests to /en/* 
# to index.php and set the cultureKey parameter
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(en|ru|de)?/?(.*)$ index.php?cultureKey=$1&q=$2 [L,QSA]
При этом директивы для дружественных URL изначально присутствующие в этом файле необходимо закомментировать.
Александр
Александр
Спасибо! Александр весь день пытаюсь решить проблему и не как не получается. Есть два контекста eng и web у каждого контекста свой домен в настройках контекста eng так
site_url: https://test.com/
site_start: 39
cultureKey: en
, в babel связал главные двух контекстов, теперь при переключении языковых версий ссылка у контекста eng такая
https://test.com/главная контекста eng/
а должна быть
https://test.com/
вчера вроде всё было нормально но были некоторые баги пришлось всё по новой сделать и вылезла такая проблема не могу понять что я упустил и с чем это может быть связано?
Александр
Александр
Интересно получается, если не связываешь главные страницы контекстов в Babel, то с url всё нормально, но если находишься к примеру в контексте eng и наводишь на ссылку переключения языка этого контекста, она будет не правильная то-есть будет полный путь до ресурса
Александр
Александр
Александр, доброго вечера! Не как не получается сделать всё по уму. Есть три контекста web,deg,eng, у контекса web свой домен: сайт.ru, у eng тоже: сайт.com а deg уже идёт от него сайт.com/de/, как я понимаю вся проблема в плагине, пробовал такие варианты:
<?php
if($modx->context->get('key') != "mgr"){
    /* grab the current langauge from the cultureKey request var */
    switch ($_REQUEST['cultureKey']) {
        case 'de': 
            $modx->switchContext('deg'); 
            setlocale(LC_ALL, 'de_DE.UTF8');
            break;
        case 'en': 
            $modx->switchContext('eng'); 
	setlocale(LC_ALL, 'en_US.UTF8');
            break;
        default:
            // Set the default language/context here
            $modx->switchContext('web');
            setlocale(LC_ALL, 'ru_RU.UTF8');
             break;
    }
	unset($_GET['cultureKey']);
}
при таком раскладе не подтягивает лексиконы при переключении.

Далее пытался так
if ($modx->context->key == 'mgr' || !$modx->getOption('friendly_urls') || $modx->event->name != 'OnHandleRequest') {
    return;
}
 
switch ($_SERVER['HTTP_HOST']) {
   // проверка домена 1
    case 'сайт.ru':
        // if the http_host is of a specific domain, switch the context
        $modx->switchContext('web');
        break;
   // проверка домена 2
    case 'сайт.com':
        // if the http_host is of a specific domain, switch the context
        $modx->switchContext('eng');
        break;
        // проверка домена 2
    case 'сайт.com/de/':
        // if the http_host is of a specific domain, switch the context
        $modx->switchContext('deg');
        break;
    default:
        // by default, don't do anything
        $modx->switchContext('web');
        break;
}
тут лексиконы тянет, переключает языки отдельных доменов но не работает с контекстом deg, какой в данном случае должен быть плагин, подскажите пожалуйста?
Александр
Александр
Частично с этим разобрался в моём случае нужно было в настройках сервера в разделе (Домены), указать путь к папке с файлами, проблема решена, но как тоже самое потом на хосте сделать, это пока не понятно.
Александр Мальцев
Александр Мальцев
Попробуйте в «config.core.php» указать путь до домена и папки core.