ГлавнаяРазноеКак использовать разные домены в WordPress Multisite

Как использовать разные домены в WordPress Multisite

WordPress Multisite — это режим, в котором на одной установке ядра WordPress может работать неограниченное количество сайтов, при этом домены сайтов в сети могут быть совершенно разными.

При конфигурации WordPress в режиме Multisite предлагается два варианта сети — сеть с субдиректориями, и сеть с субдоменами. Данная опция часто вводит владельцев сайтов в заблуждение, что все сайты в сети будут работать исключительно в рамках одного домена, но это не так — любой сайт в сети Multisite может иметь свой собственный домен.

Плагин WordPress MU Domain Mapping

Привязать домен с помощью плагина WordPress MU Domain Mapping

Привязать домен с помощью плагина WordPress MU Domain Mapping

Чаще всего для работы с различными доменами в сети Multisite используется плагин WordPress MU Domain Mapping, который позволяет привязать один или несколько доменов к любому сайту в сети через специальный интерфейс.

Этот плагин содержит собственные таблицы с доменами и работает через специальный файл wp-content/sunrise.php, который запускается на раннем этапе загрузки ядра WordPress. В этом файле плагин определяет запрашиваемый домен, и устанавливает требуемые константы и глобальные переменные для корректной работы.

В более новых версиях ядра WordPress, использовать разные домены можно и без дополнительных плагинов, основываясь на уже существующих таблицах с данными о каждом сайте в сети.

Домены на уровне ядра WordPress Multisite

На сегодняшний день этот метод является больше «трюком» нежели полноценной возможностью режима Multisite в WordPress. Тем не менее, разработчики ядра хорошо знакомы с данным методом, поэтому используя его можно рассчитывать на полноценную совместимость в будущих обновлениях.

Как и в случае с плагином, данный метод подразумевает, что вы установили WordPress Multisite в режиме субдоменов. Чтобы установить доменное имя для сайта в сети, достаточно указать его в конфигурации сайта в панели управления сетью:

Конфигурация сайта в WordPress Multisite

Конфигурация сайта в WordPress Multisite

Учтите, что если вы создаете новый сайт в сети, вам сперва потребуется создать его в виде поддомена основного сайта, и уже после этого можно его отредактировать и изменить на полноценный домен.

После внесения этих изменений, сайт сразу же начнет работать по указанному новому домену (при условии, что веб-сервер сконфигурирован корректно), но работа на этом не закончилась. По умолчанию ядро WordPress сохраняет куки аутентификации на основном домене в сети, поэтому для дополнительных доменов требуется внести небольшое изменение в файл wp-config.php:

define( 'COOKIE_DOMAIN', $_SERVER['HTTP_HOST'] );

После этого убедитесь в том, что вы можете выполнить вход по новому домену, а также на все остальные сайты в сети Multisite.

Любую дополнительную логику и редиректы для дополнительных доменов можно прописать в файле sunrise.php. Если же вы желаете иметь сеть как с поддоменами, так и с субдиректориями, то это тоже возможно, но не без дополнительной конфигурации веб-сервера.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

  • Здравствуйте, у меня не получается создание именно суб-директории,
    что-бы сайты находились в папках на одном домене my-site/sub-site. Только можно присоединять поддомены.
    Как я понимаю это нужно прописать в wp-config? Но вот что?

    • Егор, для доп. доменов Multisite должен работать в режиме поддоменов, а не субдиректорий. В нашей предыдущей статье мы описали процесс установки режима Multisite.

      • Ну да, я ознакамливался со статьей, вроде делал все правильно, но у меня закрыт все-равно этот чебокс.

        А может не получаться из-за того, что я пытался установить Multisite уже на поддомен вида dev.my-site/

        Я сейчас еще раз попробую и напишу результат.

  • Егор

    Интересно, а каково влияние этой технологии на нагрузку на сервер?

    У меня сейчас, к примеру, работают 20 сайтов на WP (соответственно, имеется 20 отдельных установок). Посещаемость каждого от 5 до 200 хостов в сутки. Позволит ли внедрение рассматриваемого решения снизить нагрузку на сервер?

    Есть ли какая-либо статистика по этому поводу?

    • При 200 хостов в сутки это особой роли не сыграет, а вообще режим Multisite будет работать быстрее, чем столько же отдельных установок WordPress, особенно если на сервере стоит кэширование байт-кода PHP, т.к. нужно будет обрабатывать файлы ядра и держать их в памяти лишь для одной установки, а не для 20-ти отдельно.

  • artem zaytsev

    Здравствуйте, Константин! Можно подробней про настройку веб-сервера? Какая должна быть конфигурация?

    И дополнительный вопрос: не влияет ли такой режим каким либо образом на SEO?
    Огромное спасибо за пост! Очень кстати…

    • Если простыми словами, то вам нужно все домены настроить в одну и ту же корневую директорию, в nginx это выглядит примерно так:

      server_name example.org other.org third.org;
      root /path/to/www;

      # …
      try_files $uri $uri/ /index.php$is_args$args;

      Не влияет ли такой режим каким либо образом на SEO?

      Нет.

      • artem zaytsev

        у если Apache?….

        • У Apache это выглядит следующим образом:

          1. apt-get remove apache2
          2. apt-get install nginx

          А затем то же самое, что и для nginx ;)

          А если серьезно то вроде как через ServerAlias, точно сказать не могу, сто лет с ним не работали, но посмотрите документацию здесь.

          • artem zaytsev

            Константин, спасибо преогромнейшее!

        • Да, через Server Alias. У меня вот так:

          ServerName korobochkin.com
          ServerAlias *.korobochkin.com
          ServerAlias another-domain.ru *.another-domain.ru

  • Сергій

    А можно что бы один блог на вордпресс работал на трёх разных доменах?

    • Можно одному сайту присвоить несколько доменов, но один из них будет «основным» и остальные домены будут на него перенаправлять. Если хотите полноценные домены для одного и того же сайта, то без кучи грязных хаков (вроде замены адресов «на лету» через буфер вывода) не обойтись.

      • Сергій

        Понял. Спасибо.

      • Сергій

        И ещё вопрос: как безопасно можно сменить домен для блога на WordPress?

        • С точки зрения безопасности не вижу никаких препятствий, но учтите, что поисковые системы и другим паукам сложно будет найти новый адрес вашего сайта, если вы им не подскажете, поэтому обязательно ставьте редиректы со старых доменов.

          Сам процесс достаточно простой, мы для этого предпочитаем использовать WP-CLI и команду search-replace которой можно выполнить поиск с заменой со старого адреса на новый по всей базе данных WordPress.

          • Сергій

            Спасибо за ответ.
            Под безопасностью я имел введу что бы при смене домена не получал ошибки.

            Какой из данных методов предоставленных здесь, самый лучший: http://twog.me/kak-bystro-perenesti-sait-wordpress-na-noviy-domen/

          • Никакой :) ни один из способов не учитывает сериализацию данных WordPress про поиске с заменой, поэтому могут отвалиться виджеты, опции и многое другое. Как я описал выше, лучше всего с этим справляется WP-CLI.

          • Сергій

            Ого, а я уж было хотел выполнить последние три запроса mysql в phpmyadmin.
            Спасибо за помощь.

          • Сергій

            Я так понял что достаточно этих трёх команд:?

            wp search-replace ‘http://example.dev’ ‘http://example.com’

            wp option update home ‘http://example.com’

            wp option update siteurl ‘http://example.com’

            Или только последних двух?

          • Первой достаточно.

          • Сергій

            В интернете столько рекомендуемых инструкций, а оно оказывается что и проще можно. Приятно удивлён.

            Изменения происходят в БД и в файлах тем, к примеру в function.php?
            Как работает вообще данная команда?
            Вижу что в нете мало инфы по этому поводу и даже инструкций на смене домена через терминал не нашёл.

          • Она работает только с базой данных, файлы она не трогает. Если у вас multisite, то в файле wp-config.php нужно будет еще домен изменить, а все остальные файлы, если правильно построены, должны использовать значения из базы данных, например с помощью home_url().

          • Сергій

            Вопросов больше нет. Спасибо.

  • Дамир, CNAME на рут-запись поставить не получится, поэтому только с помощью A записи с указанием IP адреса сервера.

    • Damir Akhmetov

      У меня что-то не получается. Удалил плагин, даже без него у добавленных сайтов не открывается консоль, перенаправляет на заглушку 404, что на нашем сервере, то есть поддомены не работают на мультисайте.

      • Вероятнее всего дело в конфигурации веб-сервера. Поддомены (и дополнительные домены) должны все вести в одну и ту же корневую директорию с WordPress, т.е. если вы видите стандартную заглушку nginx/apache то они видимо направлены в другие корневые директории. Вы можете обратиться к вашему хостинг-провайдеру за помощью.

  • Николай

    Добрый день! Помогите пожалуйста решить мою задачу.

    У меня есть 10 сайтов (соответственно 10 доменов) Я решил создать сетку сайтов на базе 1 CMS.

    И поэтому поводу у меня вопросы:

    1) Есть ли требования к хостингу?

    2) Проблема еще в том, что сайты не должны долго лежать, то есть можно ли сначала сделать на под доменах, создать шаблоны для каждого сайта, наполнить контентом, а потом поддомены заменить на домены?

    • Николай, требований как таковых нет, главное чтобы все домены указывали на одну и ту же корневую директорию, где лежит ядро WordPress. Ну если хостинг-провайдер хорошо знаком с WordPress и особенно Multisite, то это конечно огромный плюс.

      Можно создать на поддоменах, затем заменить на домены. Если это на разных серверах, то можно создать сразу на правильном домене но не менять DNS запись домена пока все не будет готово, тогда при смене вообще ничего лежать не будет.

      • Romario Dallas

        «главное чтобы все домены указывали на одну и ту же корневую директорию, где лежит ядро WordPress» во за этот совет о души!!! я 3 часа е***ся, указав папку как написано в инструкции на субдомены, а надо было на вордпресс. при чем это нигде не указано… а сам я допер только за 6 часов и то с участивем вашего коммента.

  • Эмиль Акзямов

    Здравствуйте! Помогите решить такую задачу. Есть сайт A на котором стоит тема с плагинами оптимизированая для работы больше с ПК, хочу создать домен m.мойсайт.ru мобильную версию сайта А, на котором будет стоять аналогичная тема но без плагинов для ПК, то есть тема одна применяться будет, как сделать чтобы все посты, товары woo commerce брались/были на мобильной версии m.мойсайт.ru. Короче намудрил я, сейчас есть сайт с товарами и темой плагинами заточил ее под ПК, хочу сделать редирект на мобильную версию этой темы. Без плагинов она хорошо выглядит на смартах. Спасибо.

    • Весьма проблематично, с учетом того, что установка WordPress привязана к домену. Также меню и виджеты привязываются к теме. Но никто не мешает сделать одну тему, в которой будет определяться откуда открывается сайт и исходя из этого цеплять нужные файлы (шаблоны) в рамках одной темы.

      • Эмиль Акзямов

        Как?) Мне по сути надо, просто настройки как то создать какие плагины работают какие нет, какая меню используется родная или ubermenu, походу очень трудно это будет сделать. Наверно придется сделать редирект просто на другую главную страницу, где сама, страница будет выполнять роль меню. Блин а так хотелось просто создать поддомен m.мойсайт.ru в режиме мультисайт, настроить там отдельно мобильные плагины, и чтобы она брала товары woocommerce с родного домена. Есть конечно вариант полностью создать на поддомене копию родного сайта и там уже, тему редактировать но тогда придется каждый раз между двумя wordpress разрываться

        • Юрий

          такая же проблема, нашли уже решение?

  • В конфиге вроде все ок, думаю это как-то связано с настройкой MySQL. Возможно ваш хостинг-провайдер поставил ограничение на количество таблиц, обратитесь за помощью в поддержку.

    • DragDG

      Добрый день, Константин! Возможно обратиться к Вас за помощью в настройке?

  • Богдан

    Добрый вечер!

    У меня такая ситуация. В моем интернет магазине есть три категории товаров: Одежда и аксессуары, техника и ювелирные изделия.
    Мне нужно чтобы Одежда с аксессуарами и техника открывались на двух разных поддоменах.

    Вопросы такие:
    1. Как в меню основного домена сделать переадрессацию на поддомены с соответствующими категориями товаров, но при этом, если товары, будут добавляться на главном домене, то и на поддоменах тоже, чтобы добавлялись?

    2. Нужно ли создавать разные базы данных для поддоменов?

    3. Можно ли реализовать ето с помощью Multisite

    Спасибо!