Всем доброго дня! Сегодня я хочу поделиться с вами своими наработками в области сайтостроения. Мы рассмотрим как можно сделать сетку сателитов и благодаря ей зарабатывать. Свои сайты я палить не буду, но покажу как сделать свою сетку используя одну установленную версию MODX Revo и панель ISPmanager 5 Lite. Для начала мы должны определиться, на каком домене мы развернём нашу версию MODX Revo. Скажем это будет site.ru (наш главный сайт с контекстом по умолчанию web). После установки MODX Revolution нам нужно установить следующие компоненты:
или
А затем настроить псевдонимы (алиасы), которые легко настраиваются в панели ISPmanager:
После того как мы добавили домены в псевдонимы (алиасы), можем приступить к настройке мультисайтовости в MODX Revo. Для начала нам нужно будет создать новый контекст с названием нашего добавляемого домена к примеру site2.su и создаём вот такие параметры:
Ещё нам нужно от этого контекста создать разделы, по умолчанию правильная структура сайта на MODX Revo для SEO:
Важно!
У вас должен быть включён .htaccess который по умолчанию, без 301-ых редиректов, а в системных настройках у core нужно включить ЧПУ и настроить его + важно установить из официального репозитория translit либо через репозиторий modstore.pro компонент yTranslit (он нужен для генерации ссылок).
Затем нам нужно создать плагин MultiDomains с таким содержимым:
<?php
// Работаем только на фронтенде
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr') {return;}
// Определяем запрашиваемый хост
$host = $_SERVER['HTTP_HOST'];
// Выбираем контекст с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'http_host', 'value' => $host));
$q->select('context_key');
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
// Учитываем наш запрос в БД
$modx->queryTime += microtime(true) - $tstart;
$modx->executedQueries++;
// Получаем ключ контекста
if ($context = $q->stmt->fetch(PDO::FETCH_COLUMN)) {
// Web инициализируется в index.php - на него переключаться не нужно
if ($context != 'web') {
$modx->switchContext($context);
}
}
}
И повесить на системное событие OnHandleRequest. Иногда нужно делать для каких-то доменов 301-ые редиректы на www, для чего мы в .htaccess добавляем такие строчки:
# Редирект site2.su -> www.site2.su
RewriteCond %{HTTP_HOST} ^site2\.su [NC]
RewriteRule ^/?(.*) http://www.site2.su/$1 [R=301,L]
# Редирект всех остальных www -> non-www, кроме site2.su
RewriteCond %{HTTP_HOST} !^www\.site2\.su [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
После чего идём в настройки контекста и редактируем параметры, чтобы получилось следующее:
http_host www.site2.su
site_url http://www.site2.su/
Наша заготовка под сателиты готова. Теперь можно копировать контексты с настройками и изменять нужные параметры. По мимо http_host и site_url ещё нужно не забыть об установке нужного id главной страницы и 404ой ошибки.
Комментарии ()