WordPress Multisite (мультисайт): 2 структуры — поддомены и подкаталоги
WordPress Multisite (мультисайт) — это функция, которая объединяет несколько сайтов в сеть и позволяет управлять ими из одной установки WordPress. На WordPress с конфигурацией Nginx + Apache мы включили мультисайт на экране установки сети, добавили один подсайт и проверили пути в меню и строки, которые добавляются в файлы конфигурации.
1️⃣ WordPress Multisite и управление сетью
В мультисайте все сайты сети используют одну общую установку WordPress. Файлы ядра, плагины и темы тоже общие, поэтому на сервере не появляется отдельная папка WordPress для каждого сайта.
Отдельными у каждого сайта остаются таблицы базы данных и папка загрузки медиафайлов, а общими для всей сети — только таблицы пользователей. Первый сайт использует существующую папку [/wp-content/uploads/], а начиная со следующего каждый сайт использует папку со своим номером в [/wp-content/uploads/sites/].
Пользователь, который управляет всей сетью, — суперадминистратор (Super Admin). Экраны управления сетью появляются после создания сети и показываются только суперадминистраторам.
Пользователи создаются как учётные записи сети, но чтобы попасть на конкретный сайт, им нужна роль на этом сайте. Права администраторов сайтов тоже урезаны: устанавливать темы и плагины и редактировать профили других пользователей может только суперадминистратор.
На схеме ниже видно, как одна установка через сеть делится на несколько сайтов, и какие адреса получают сайты при каждом способе адресации.
2️⃣ Поддомены и подкаталоги: формат адреса и ограничения выбора
При установке сети вы выбираете способ адресации сайтов: поддомены или подкаталоги. Поддомен — это адрес вида site1.example.com, а подкаталог (подпапка) — адрес вида example.com/site1.
| Параметр | Поддомен | Подкаталог |
|---|---|---|
| Адрес сайта | site1.example.com | example.com/site1 |
| Название в официальной документации | По домену (domain-based) | По пути (path-based) |
| Подготовка на сервере | Направить поддомены на папку установки WordPress в DNS и на сервере | Без дополнительной настройки, если работают постоянные ссылки |
| Когда пользователи сами создают сайты | Нужны поддомены с подстановочным знаком (wildcard) | Без дополнительных условий |
| Когда выбрать нельзя | Когда в адресе WordPress есть путь, или это localhost либо IP-адрес | Сайты с записями, опубликованными больше месяца назад |
| Адрес записей основного сайта | Без изменений | /blog/ перед адресом записей |
При подкаталогах на сервере с работающими постоянными ссылками ничего дополнительно настраивать не нужно, но на сайте с записями, опубликованными больше месяца назад, этот способ выбрать нельзя. Ограничение нужно, чтобы адреса существующих записей не конфликтовали с адресами новых сайтов, поэтому такие сайты устанавливаются с поддоменами.
В сети на подкаталогах к адресам записей основного сайта добавляется [/blog/]. Так они не пересекаются с адресами подсайтов, а к адресам страниц это не добавляется.
Чтобы потом сменить выбранный способ, придётся пройти несколько шагов. По официальной документации, если изменить только значение [SUBDOMAIN_INSTALL] и правила перезаписи, адреса существующих сайтов не перенесутся, а DNS и сертификаты нужно настроить отдельно.
3️⃣ Подготовка к установке сети: резервная копия, постоянные ссылки и требования к серверу
Установка сети меняет файлы и базу данных существующего сайта, поэтому официальная документация советует сначала сделать резервную копию, если сайт не только что установлен.
Сделайте резервную копию базы данных и файлов, убедитесь, что постоянные ссылки работают, и деактивируйте все активные плагины. Снова активируйте плагины после создания сети.
Если вы планируете перенести WordPress в собственную папку, сделайте это до включения мультисайта. Если вы используете адрес с www при поддоменах, сделайте [Адрес WordPress (URL)] и [Адрес сайта (URL)] одинаковыми и завершите смену домена тоже до установки.
Если в адресе WordPress указан номер порта, отличный от :80 или :443, создать сеть нельзя.
Сервер должен обрабатывать правила перезаписи для мультисайта, а Apache нужен модуль mod_rewrite.
В конфигурации Nginx + Apache Nginx передаёт запросы Apache, а Apache читает .htaccess. После замены .htaccess правилами с экрана установки сети адреса подсайта открылись, а на стороне Nginx мы правил не добавляли.
На серверах только с Nginx WordPress не создаёт правила перезаписи, поэтому конфигурацию Nginx из официальной документации нужно добавить прямо в файл конфигурации сервера.
В средах, где вы не можете сами менять конфигурацию сервера, например на виртуальном хостинге, такие условия, как поддомены с подстановочным знаком, нужно согласовать с хостинг-провайдером (по официальной документации).
4️⃣ Порядок установки сети
Константа [WP_ALLOW_MULTISITE] в wp-config.php только показывает меню [Инструменты] › [Установка сети], сама по себе она мультисайт не включает. Сеть включается только после установки на этом экране и добавления показанных там строк в wp-config.php и .htaccess.
Откройте wp-config.php и над комментарием об окончании редактирования добавьте строку, которая задаёт [WP_ALLOW_MULTISITE] как true. Комментарий об окончании редактирования — это строка /* That’s all, stop editing! Happy publishing. */; после сохранения обновите страницу в браузере.
define( 'WP_ALLOW_MULTISITE', true );После обновления в меню [Инструменты] под [Удаление персональных данных] появляется [Установка сети], а по нажатию открывается экран [Создать сеть сайтов на WordPress].

WordPress, установленный в подпапку, не показывает поле выбора способа адресации — только строку [Установка в подкаталог]. Текст этой строки: [Поскольку ваш сайт установлен в каталог, сайты вашей сети должны использовать подкаталоги.]
Проверьте [Название сети] и [E-mail администратора сети] и нажмите [Установить].
По официальной документации, в установках, где можно выбрать способ адресации, при выборе поддоменов появляется подсказка о wildcard-DNS, и это условие нужно только для сетей, где пользователи сами создают сайты.
После установки на экране показываются строки для wp-config.php и правила для .htaccess, подобранные под этот сайт. Сделайте резервную копию обоих файлов, вставьте строки в wp-config.php под строкой [WP_ALLOW_MULTISITE], а в .htaccess замените прежние правила WordPress новыми.

В инструкции на экране после установки комментарий об окончании редактирования показан в переводе на язык админки, но комментарий в самом wp-config.php остаётся на английском.
В wp-config.php добавляются шесть констант, в том числе [MULTISITE] и [SUBDOMAIN_INSTALL]. Значение [SUBDOMAIN_INSTALL] — true при поддоменах и false при подкаталогах.
В [DOMAIN_CURRENT_SITE] и [PATH_CURRENT_SITE] указываются домен и путь установки сайта. Ниже — строки для установки в корне example.com с подкаталогами.
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false );
define( 'DOMAIN_CURRENT_SITE', 'example.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );В этом же случае правила WordPress в .htaccess заменяются на следующие, а в строке [RewriteBase] указывается путь установки.
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
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]Сохраните оба файла и снова войдите по ссылке [Войти] на экране — в панели инструментов под [Мои сайты] появится [Управление сетью]. Если войти не получается, очистите кэш и cookie браузера и войдите снова.

В [Управление сетью] шесть меню: Консоль, Сайты, Пользователи, Темы, Плагины и Настройки, а по нажатию [Сайты] открывается список сайтов сети.

Подсайты добавляются через [Добавить сайт] рядом с заголовком списка или слева через [Сайты] › [Добавить сайт].

В [Адрес сайта (URL)] можно вводить только строчные буквы, цифры и дефисы, а если [E-mail администратора] нет в базе данных, создаётся новый пользователь.
После добавления одного подсайта в папке загрузок появилась папка [sites/2], а в базе данных добавилось 10 таблиц с номером сайта после префикса, например [wp_2_].
Постоянные ссылки подсайта не следуют настройкам основного сайта и начинаются со стандартной структуры с годом, месяцем, днём и названием записи, поэтому их задают отдельно в настройках постоянных ссылок подсайта.
В симуляторе ниже можно по порядку пройти путь от [Инструменты] › [Установка сети] до [Добавить сайт].
네트워크 설치 절차에 오신 것을 환영합니다!
아래의 정보를 채우고 워드프레스 사이트의 네트워크를 만들 수 있습니다. 다음 단계에서 구성 파일을 만들 것입니다.
다음 단계를 완료하여 사이트의 네트워크 만들기 기능을 활성화하세요.
- /var/www/html/wp/의 wp-config.php파일에 /* 그게 다입니다. 편집을 멈추세요! 즐겁게 발행하세요. */행 위에 다음을 추가합니다:wp-config.php에 대한 네트워크 환경설정 규칙define( 'MULTISITE', true );define( 'SUBDOMAIN_INSTALL', false );define( 'DOMAIN_CURRENT_SITE', 'example.com' );define( 'PATH_CURRENT_SITE', '/wp/' );define( 'SITE_ID_CURRENT_SITE', 1 );define( 'BLOG_ID_CURRENT_SITE', 1 );
- 다른 워드프레스 규칙을 교체하는 /var/www/html/wp/의 .htaccess 파일에 다음을 넣습니다:.htaccess에 대한 네트워크 환경설정 규칙RewriteEngine OnRewriteRule .* – [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]RewriteBase /wp/RewriteRule ^index\.php$ – [L]# add a trailing slash to /wp-adminRewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]RewriteCond %{REQUEST_FILENAME} -f [OR]RewriteCond %{REQUEST_FILENAME} -dRewriteRule ^ – [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]RewriteRule . index.php [L]
이 단계를 완료하고나면, 네트워크를 활성화하고 구성합니다. 다시 로그인해야 합니다.
위의 이메일 주소가 데이터베이스에 없으면 새 사용자를 만들 것입니다.
비밀번호를 설정하는 사용자 이름과 링크를 이 이메일 주소로 보낼 것입니다.
5️⃣ Когда мультисайт не подходит
Мультисайт подходит, когда, как у региональных сайтов, темы и плагины общие, а контент ведётся отдельно. Если сайтам нужно тесно делить данные или пользователей, официальная документация отмечает, что мультисайт может быть не лучшим решением.
Если нужно только, чтобы дизайн выглядел по-разному, это решается на одном сайте плагином, который переключает темы или таблицы стилей. Если каждой группе пользователей нужно видеть только разную информацию, это тоже можно сделать на одном сайте плагинами, меняющими права и меню.
Сначала проверьте и плагины, которые вы используете. Не все плагины из каталога плагинов работают в мультисайте, поэтому официальная документация советует уточнить поддержку на странице плагина или у разработчика.
🔢 FAQ & рекомендуемые материалы
Сервер
Базовые настройки htaccess в WordPress
Статья, где отдельно собраны базовые правила .htaccess для обычных сайтов и для мультисайта.
SEO
Поддомен VS подпапка
Статья, в которой поддомены и подпапки сравниваются по тому, что выгоднее для SEO.
Настройки
Постоянные ссылки и ярлыки в WordPress
Объясняет структуру постоянных ссылок и ярлыки, которые задаются отдельно для каждого подсайта.
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.