Проблема с поддоменами сайта.
Всем привет.
Недавно обнаружили такую вот проблему на сайте.
Есть вот несколько поддоменов под одним управлении из админки. Пример поддоменов:
nsk.site.ru
spb.site.ru
и т.д.
Если в браузерной строке написать не nsk.site.ru, а к примеру nsk22222.site.ru, то сайт откроется, но описание будет как на главной site.ru. По идее что в поддомене не указывай, все равно сайт открывается, даже так kra-kra-kra.site.ru. А те поддомены которые созданы и наполняются они открываются как нужно со своим текстом.
Как это исправить? Есть идеи?
Недавно обнаружили такую вот проблему на сайте.
Есть вот несколько поддоменов под одним управлении из админки. Пример поддоменов:
nsk.site.ru
spb.site.ru
и т.д.
Если в браузерной строке написать не nsk.site.ru, а к примеру nsk22222.site.ru, то сайт откроется, но описание будет как на главной site.ru. По идее что в поддомене не указывай, все равно сайт открывается, даже так kra-kra-kra.site.ru. А те поддомены которые созданы и наполняются они открываются как нужно со своим текстом.
Как это исправить? Есть идеи?
Комментарии: 10
Может быть указать страницу 404 в настройках системы =)
Это сделано уже. Редирект на 404 идет, если нет такой страницы. А вот поддомен от куда такой берется и не понятно. Но ссылки внутренние из меню введут все на основной домен.
Сделайте проверку поддомена на присутствие его в контекстах и если соответствующего контекста не найдено, редиректом отправлять куда нужно.
дело в том, что любой выдуманный домен прописать в браузерной строке он откроется. А так ведь не должно. Таких поддоменов не сусществует просто. Если делать редирект то тут миллиард комбинаций))
Тогда меняйте настройки сервера.
Тут скорей всего нужно что-то в плагине прописать, если я не ошибаюсь.
<?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;
}
}
Вот это как раз все существующие поддомены
Василий Наумкин однажды писал про переключение контекстов. Рекомендую ознакомиться. Но если лень возиться и хочется побыстрее разделаться с вопросом, то пропишите:
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;
Спасибо за помощь. Проблема решена!
Либо нужно что-то прописать в hteccess. А вот что?
1. Не писать в A-записи домена *.artmoving.ru — чтобы несуществующие поддомены вообще не резолвились
2. Ограничить в .htaccess — редирект всех несуществующих на основной
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 страницу
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.