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

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

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

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

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

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