WordPress Multisite позволяет управлять сотнями сайтов из одной установки WordPress. Все сайты используют одну кодовую базу, но имеют независимые данные, темы и плагины.
Когда использовать Multisite
- Сеть региональных сайтов компании
- Мультиязычный сайт (отдельный подсайт на каждый язык)
- Образовательная платформа с сайтами для каждого курса
- Сеть блогов или медиапортал
Активация Multisite
1. Добавить в wp-config.php (до строки «That's all, stop editing!»)
define('WP_ALLOW_MULTISITE', true);
2. Настроить сеть
Перейдите Инструменты → Настройка сети. Выберите тип: поддомены (site1.example.com) или поддиректории (example.com/site1/).
*.example.com → IP.3. Добавить в wp-config.php
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true); // false для поддиректорий
define('DOMAIN_CURRENT_SITE', 'example.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
4. Обновить .htaccess
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Управление сетью
| Действие | Где |
|---|---|
| Создать подсайт | Мои сайты → Админ сети → Сайты → Добавить |
| Активировать плагин для всей сети | Плагины → Network Activate |
| Установить тему для всей сети | Темы → Network Enable |
| Квота дискового пространства | Настройки сети → Загрузки |
Частые ошибки Multisite
| Сообщение | Что означает |
|---|---|
| Fatal error: database error Table wp_2_options doesn't exist | Подсайт создан, но для нового ID не были созданы таблицы — обычно из-за прерванного процесса создания сайта |
| ERR_TOO_MANY_REDIRECTS на поддомене | Не настроена wildcard DNS-запись, либо DOMAIN_CURRENT_SITE указан неверно в wp-config.php |
| «Are you sure you want to do this?» при обычных действиях | Устарел nonce из-за расхождения времени между подсайтом и сетью, либо кэш-плагин отдаёт старую форму |
| «This resource is protected» в /wp-admin/network/ | Вход выполнен под обычным администратором подсайта, а не под суперадмином сети |
Multisite vs отдельные установки WordPress
| Критерий | Multisite | Отдельные установки |
|---|---|---|
| Общий код и плагины | Один набор на всю сеть | У каждого сайта свой набор |
| Изоляция при взломе | Слабая — уязвимость одного сайта угрожает всей сети | Полная, сайты не связаны |
| Ресурсы базы данных | Одна база, отдельные таблицы на сайт | Отдельная база на каждый сайт |
| Сложность бэкапа одного сайта | Выше — нужно выгружать таблицы конкретного ID | Ниже — стандартный дамп базы |
Когда Multisite не подходит
- Сайтам сети нужны разные версии PHP или несовместимые между собой плагины
- Один из сайтов ожидает взрывной рост трафика и должен масштабироваться отдельно от остальных
- Требуется полная изоляция на случай взлома одного из сайтов
- Клиентам нужен собственный полноценный административный аккаунт без прав суперадмина сети
Проверка результата
Убедитесь через WP-CLI, что сеть действительно активна и подсайт зарегистрирован:
wp core is-installed --network
wp site list --fields=blog_id,url,status
Если команда wp site list не показывает новый подсайт, проверьте, что шаг создания сайта в Админ сети завершился без ошибок БД. Дальнейшие шаги по переносу такой сети на новый сервер описаны в статье миграция WordPress на VDS, а по резервному копированию — в настройке бэкапов WordPress.
Домены для подсайтов: поддомены, поддиректории или свои домены
Помимо выбора между поддоменами и поддиректориями при активации сети, Multisite поддерживает и третий вариант — подключение полностью самостоятельных доменов к отдельным подсайтам через плагин WordPress MU Domain Mapping или встроенный механизм доменного маппинга в современных версиях ядра. Это удобно для сети сайтов разных брендов, у которых нет ничего общего, кроме админки.
Для доменного маппинга каждый привязанный домен должен указывать A-записью на тот же сервер, где живёт основная установка, а SSL-сертификат должен покрывать все привязанные имена — либо отдельным сертификатом на каждый домен, либо через автоматический выпуск Let's Encrypt для каждого добавленного имени.
Резервное копирование сети целиком
Стандартные плагины бэкапа WordPress по умолчанию часто настроены на одну установку и при работе в режиме сети выгружают либо только главный сайт, либо всю базу без разделения по подсайтам. Перед внедрением Multisite в продакшн проверьте, что выбранное решение для бэкапа явно поддерживает сетевой режим и позволяет восстановить как всю сеть, так и отдельный подсайт без потери данных остальных.