Проблема с поддоменами сайта.

Всем привет.
Недавно обнаружили такую вот проблему на сайте.
Есть вот несколько поддоменов под одним управлении из админки. Пример поддоменов:
nsk.site.ru
spb.site.ru
и т.д.

Если в браузерной строке написать не nsk.site.ru, а к примеру nsk22222.site.ru, то сайт откроется, но описание будет как на главной site.ru. По идее что в поддомене не указывай, все равно сайт открывается, даже так kra-kra-kra.site.ru. А те поддомены которые созданы и наполняются они открываются как нужно со своим текстом.

Как это исправить? Есть идеи?
Сергей
14 апреля 2017, 06:24
modx.pro
2
2 191
0

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

Николай Загумённов
14 апреля 2017, 13:08
0
Может быть указать страницу 404 в настройках системы =)
    Сергей
    14 апреля 2017, 13:40
    0
    Это сделано уже. Редирект на 404 идет, если нет такой страницы. А вот поддомен от куда такой берется и не понятно. Но ссылки внутренние из меню введут все на основной домен.
    Виталий Серый
    14 апреля 2017, 14:03
    0
    Сделайте проверку поддомена на присутствие его в контекстах и если соответствующего контекста не найдено, редиректом отправлять куда нужно.
      Сергей
      14 апреля 2017, 14:11
      0
      дело в том, что любой выдуманный домен прописать в браузерной строке он откроется. А так ведь не должно. Таких поддоменов не сусществует просто. Если делать редирект то тут миллиард комбинаций))
        Виталий Серый
        14 апреля 2017, 14:22
        0
        Тогда меняйте настройки сервера.
          Сергей
          14 апреля 2017, 14:45
          0
          Тут скорей всего нужно что-то в плагине прописать, если я не ошибаюсь.
          <?php
          if($modx->context->get('key') != "mgr"){
              switch ($_SERVER['SERVER_NAME']) {
                  case 'artmoving.ru':
                      $modx->switchContext('web');
                      $modx->setOption('cultureKey', 'ru');
                      break;
                  case 'spb.artmoving.ru':
                      $modx->switchContext('spb');
                      $modx->setOption('cultureKey', 'ru');
                      break;
                  case 'nsk.artmoving.ru':
                      $modx->switchContext('nsk');
                      $modx->setOption('cultureKey', 'ru');
                      break;
                  case 'en.artmoving.ru':
                      $modx->switchContext('en');
                      $modx->setOption('cultureKey', 'en');
                      break;
                  default:
                      // Set the default language/context here
                      $modx->switchContext('web');
                      $modx->setOption('cultureKey', 'ru');
                      break;
              }
          }
          Вот это как раз все существующие поддомены
            Виталий Серый
            14 апреля 2017, 15:23
            1
            +2
            Василий Наумкин однажды писал про переключение контекстов. Рекомендую ознакомиться. Но если лень возиться и хочется побыстрее разделаться с вопросом, то пропишите:
            default:
                        // Set the default language/context here
                        $modx->switchContext('web');
                        $url = $modx->makeUrl($modx->getOption('error_page'));
                        $modx->sendRedirect($url, array('responseCode' => 'HTTP/1.1 404 Not Found'));
                        break;
              Сергей
              14 апреля 2017, 15:47
              0
              Спасибо за помощь. Проблема решена!
      Сергей
      14 апреля 2017, 14:56
      0
      Либо нужно что-то прописать в hteccess. А вот что?
        Алексей Ерохин
        14 апреля 2017, 15:26
        0
        1. Не писать в A-записи домена *.artmoving.ru — чтобы несуществующие поддомены вообще не резолвились
        2. Ограничить в .htaccess — редирект всех несуществующих на основной
        RewriteCond %{HTTP_HOST} .
        RewriteCond %{HTTP_HOST} !^(www|spb|nsk|en)\.artmoving\.ru [NC]
        RewriteRule (.*) http://www.artmoving.ru/$1 [R=301,L]
        3. Ограничить в плагине — отдавать 404 страницу
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          10