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

Александр
Александр
1,6K
6
Содержание:
  1. Комментарии
Александр, здравствуйте! Пытаюсь разобраться как правильно сделать языковую версию сайта при условии что у неё будет свой домен и в последующем остальные языковые версии сайта будут от неё, пример сайт.com/di/, от части всё получается, но не совсем всё понятно, устанавливаю Babel, создаю контекст eng прописываю в нём параметры для нового домена:

Общие, ключ: eng

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

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

  1. Александр Мальцев
    Александр Мальцев
    2020-02-14 14:08:41
    Вам необходимо правильно сконфигурировать файл .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 изначально присутствующие в этом файле необходимо закомментировать.
  1. Александр
    Александр
    2020-02-14 17:12:20
    Спасибо! Александр весь день пытаюсь решить проблему и не как не получается. Есть два контекста eng и web у каждого контекста свой домен в настройках контекста eng так
    site_url: https://test.com/
    site_start: 39
    cultureKey: en
    , в babel связал главные двух контекстов, теперь при переключении языковых версий ссылка у контекста eng такая
    https://test.com/главная контекста eng/
    а должна быть
    https://test.com/
    вчера вроде всё было нормально но были некоторые баги пришлось всё по новой сделать и вылезла такая проблема не могу понять что я упустил и с чем это может быть связано?
  • Александр
    Александр
    2020-02-14 21:19:28
    Интересно получается, если не связываешь главные страницы контекстов в Babel, то с url всё нормально, но если находишься к примеру в контексте eng и наводишь на ссылку переключения языка этого контекста, она будет не правильная то-есть будет полный путь до ресурса
  • Александр
    Александр
    2020-02-15 23:24:10
    Александр, доброго вечера! Не как не получается сделать всё по уму. Есть три контекста 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, какой в данном случае должен быть плагин, подскажите пожалуйста?
  • Александр
    Александр
    2020-02-14 00:20:48
    Частично с этим разобрался в моём случае нужно было в настройках сервера в разделе (Домены), указать путь к папке с файлами, проблема решена, но как тоже самое потом на хосте сделать, это пока не понятно.
    1. Александр Мальцев
      Александр Мальцев
      2020-02-26 14:45:06
      Попробуйте в «config.core.php» указать путь до домена и папки core.