Серия «wordpress»

9

Как сделать мультиязычный сайт на поддоменах в WordPress. Часть 2. Включение и настройка режима WordPress Multisite

В первой части я показал, как настроить поддомены, dns записи и ssl.

Сегодня мы настроим конфигурацию wordpress для мультисайтов


Прежде, чем мы продолжим обязательно сделайте:

  1. Сделайте резервную копию файлов wp-config.php и .htaccess

  2. Сделайте резервную копию базы данных

  3. Проверьте резервную копию базы данных!


Сначала нам нужно "сказать" WordPress, что мы вообще собираемся активировать Multisite. По умолчанию эта функция скрыта.

  1. Подключитесь к вашему сайту по FTP или через файловый менеджер на хостинге.

  2. Откройте файл wp-config.php в корневой папке вашего сайта.

  3. Чтобы разблокировать скрытую функцию мульти сайта найдите строку, которая выглядит так:
    /* That's all, stop editing! Happy publishing. */
    перед ней добавьте строку
    define('WP_ALLOW_MULTISITE', true);

  4. Сохраните файл и загрузите его обратно на сервер.

  5. В административной панели появится новый пункт Настройки -> Установка сети

7. Выберите его. Перед вами откроется окно с двумя блоками кода, которые следует скопировать и вставить с соответствующие файлы wp-config.php и .htaccess

8. Сохраните оба файла. После этого WordPress "выкинет" вас из админки. Это нормально! Это означает, что система переключилась в новый режим.

9. Войдите в систему заново. В меню появятся новые пункты:

Чтобы добавить новый сайт выберите пункт меню Добавить -> Сайт

Заполните префикс, язык, название сайта и электропочту администратора

Аналогично для остальных языков.


Если что-то пошло не так.

Когда на сайте "белый экран смерти" или что-то работает не так, режим отладки — ваш лучший друг.

Включить режим отладки:
WP_DEBUG: Главный "рубильник". Включает (true) или выключает (false) режим отладки.

WP_DEBUG_LOG: Если true, все ошибки будут записываться в файл /wp-content/debug.log. Это лучший способ анализировать проблемы на рабочем сайте, не показывая ошибки посетителям.

WP_DEBUG_DISPLAY: Если true, ошибки будут выводиться прямо на экран. Используйте только на локальном или тестовом сайте!

Рекомендуемая конфигурация для разработки:
Эта комбинация будет записывать все ошибки в файл, но не будет показывать их пользователям:

// Включаем режим отладки
define( 'WP_DEBUG', true );
// Включаем запись ошибок в лог-файл
/wp-content/debug.log define( 'WP_DEBUG_LOG', true );
// Отключаем показ ошибок на экране
define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );

Для рабочего сайта убедитесь, что WP_DEBUG установлен в false.

define( 'WP_DEBUG', false );

Как повысить безопасность сайта

wp-config.php позволяет отключить несколько потенциально небезопасных функций.

Как запретить редактирование файлов тем и плагинов из админки:
Это не позволит администратору (или злоумышленнику, получившему его пароль) редактировать PHP-файлы напрямую из админ-панели.

define( 'DISALLOW_FILE_EDIT', true );

Как принудительно использовать SSL для входа и админ-панели:
Эта настройка гарантирует, что логин и пароль всегда передаются по зашифрованному каналу.

define( 'FORCE_SSL_ADMIN', true );

Как управлять производительностью и ресурсами

Как увеличить лимит памяти для PHP:
Иногда сложные плагины или темы требуют больше оперативной памяти, чем выделено по умолчанию, что приводит к ошибке "Allowed memory size... exhausted".

// Устанавливаем лимит в 128 мегабайт
define( 'WP_MEMORY_LIMIT', '128M' );
// Для админ-панели можно выделить еще больше
define( 'WP_MAX_MEMORY_LIMIT', '256M' );

Как отключить встроенный CRON:
WordPress запускает свои запланированные задачи (проверка обновлений, публикация отложенных постов) при каждом посещении сайта. На высоконагруженных проектах это может вызывать задержки. Опытные администраторы отключают встроенный CRON и настраивают его запуск через планировщик на сервере.

define( 'DISABLE_WP_CRON', true );

Как управлять ревизиями и корзиной

WordPress сохраняет копию каждой вашей правки (ревизии), что может быстро "раздувать" базу данных.

define( 'WP_POST_REVISIONS', false );

Как ограничить количество ревизий (например, до 5):

define( 'WP_POST_REVISIONS', 5 );

Как изменить время автоочистки корзины (по умолчанию 30 дней):

// Очищать корзину каждые 7 дней
define( 'EMPTY_TRASH_DAYS', 7 );
// Чтобы отключить корзину (удалять навсегда сразу)
define( 'EMPTY_TRASH_DAYS', 0 );


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

Понравилось — ставь «+»
Полезно? Подпишись.

Так я буду знать, какой контент вам интересен.
Вопросы можно задавать в комментариях 👇👇👇
Удачи! 🚀

Показать полностью 7
9

Как сделать мультиязычный сайт на поддоменах в WordPress. Полное руководство для разработчиков

Дисклеймер.
1. В статье упрощены некоторые понятия. Я сделал это, чтобы не загружать статью лишними терминами. Вы можете дополнить и поправить меня в комментариях.
2. Я знаю про плагины. Моя задача - показать, как можно настроить всю мультиязычность руками.
3. На пикабу нет редактора кода - поэтому код в картинках. Но я дам ссылки на гитхаб, чтобы вы могли скачать готовый код.

Мультиязычный сайт, расположенный на разных поддоменах (например, en.site.com, es.site.com, fr.site.com), работает как несколько (по числу языков) независимых сайтов. Вы можете управлять им отдельно, настраивать уникальные метатеги, подключать региональные CDN, собирать точную аналитику по географическим сегментам и даже распределять нагрузку между разными серверами. Кроме того, поисковые системы воспринимают такие версии как отдельные ресурсы, что улучшает SEO: каждая языковая версия индексируется независимо и может занимать высокие позиции в локальных поисковых результатах.

Примеры поддоменов:

У этого подхода есть неоспоримые преимущества: каждая языковая версия изолирована и обновляется отдельно. Поддомены можно обслуживать на отдельных серверах или использовать разные настройки кэширования, что повышает производительность сайта. Отдельные поддомены позволяют точно собирать статистику по пользователям из разных стран и языковых сегментов. Поддомены упрощают настройку CDN и кэширования для каждой языковой версии, благодаря чему страницы загружаются быстрее. Поисковые системы воспринимают поддомены как отдельные сайты, что позволяет показывать контент на нужном языке и регионе.

Для работы поддоменов необходимо настроить DNS, хостинг и SSL. Мы разберёмся с этим шаг за шагом.

Часть 1. DNS, хостинг и SSL

Для работы мультиязычного сайта через поддомены нужно настроить внешний уровень: домен, сервер и сертификат безопасности.

Основные понятия:

  • DNS (Domain Name System) — система, которая переводит удобный для человека адрес сайта (например, mysite.com) в числовой IP-адрес сервера (например, 123.45.67.89). Это работает как телефонная книга интернета.

  • NS-сервер (Nameserver) — хранит все DNS-записи для вашего домена. На запрос «какой IP у mysite.com?» возвращает: 123.45.67.89.

  • Хостинг — это физический сервер, на котором хранятся файлы и база данных вашего сайта.

  • SSL — это сертификат, который шифрует соединение между браузером пользователя и вашим сайтом, обеспечивая безопасную передачу данных (HTTPS).

Шаг 1. Настройка DNS

Чтобы браузер понял, куда вести пользователя, когда тот вводит ru.mysite.com, мы настраиваем DNS-записи.

Как найти панель управления DNS?
DNS управляется там, где указаны NS-серверы вашего домена.

  1. Войдите в личный кабинет вашего регистратора домена (компании, где вы купили mysite.com, например, reg.ru, GoDaddy).

  2. Найдите раздел «Управление доменом» или «NS-серверы» (Nameservers).

  3. Посмотрите на указанные адреса:

    • Если указаны адреса вашего хостинга (например, ns1.myhosting.com) — мы настраиваем DNS в панели управления хостингом.

    • Если указаны адреса, похожие на wilson.ns.cloudflare.com или dalary.ns.cloudflare.com — значит, DNS управляется через сервис Cloudflare, и все изменения мы делаем в его личном кабинете.

    • Если указаны адреса самого регистратора (например, ns1.reg.ru) — мы настраиваем DNS прямо в кабинете регистратора.

    • Если вы знаете другие настройки — напишите в комментариях.

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

  • Тип A: Прямо связывает поддомен с IP-адресом вашего сервера.

  • Имя: Название поддомена без основного домена (ru, de).

  • Значение: IP-адрес вашего хостинга.

Альтернативный вариант — запись типа CNAME, которая связывает поддомен с другим доменным именем.

Неудобство ручного подхода в том, что для каждого нового языка вам придётся создавать новую запись. Для масштабируемости лучше использовать Wildcard.

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

  • Имя: Символ звёздочки * означает «любой поддомен».

Рекомендация: Для Wildcard предпочтительнее использовать A-запись, так как она надёжнее и работает напрямую с IP-адресом. CNAME для Wildcard поддерживается не всеми провайдерами и может создавать лишние перенаправления.

После сохранения записей подождите обновления DNS (от нескольких минут до 24 часов).

Шаг 2. Настройка хостинга

Теперь нужно научить сервер правильно реагировать на запросы ко всем поддоменам. Задача — чтобы ru.mysite.com, de.mysite.com и т.д. загружали файлы из одной корневой папки (где установлен WordPress).

  1. Войдите в панель управления вашим хостингом (например, cPanel, Plesk).

  2. Найдите раздел «Поддомены» (Subdomains).

  3. Создайте новый поддомен со следующими параметрами:

    • Имя поддомена: * (символ звёздочки).

    • Домен: Ваш основной домен (например, mysite.com).

    • Корневая папка (Document Root): Критически важно указать ту же папку, где лежит ваш основной сайт (обычно public_html или www). Не позволяйте системе создать новую папку типа public_html/*.

Если в вашей панели нет опции создания Wildcard-поддомена, обратитесь в техническую поддержку хостинга с запросом: «Пожалуйста, настройте обработку wildcard-поддоменов для домена mysite.com, чтобы все они указывали на корневую папку public_html«.

Шаг 3. Настройка SSL-сертификата

Для безопасной работы (HTTPS) каждому поддомену нужен действительный SSL-сертификат. Есть два подхода:

Вариант 1: Wildcard SSL-сертификат (рекомендуется)
Сертификат покрывает все поддомены вида *.mysite.com одним файлом.

  1. В панели хостинга найдите раздел «SSL/TLS» или «Безопасность».

  2. Найдите управление сертификатами для вашего домена.

  3. Убедитесь, что активен сертификат с пометкой Wildcard (в его данных должно быть указано *.mysite.com).

  4. Если у вас обычный сертификат, перевыпустите его, обязательно выбрав опцию «Включить Wildcard» или «Защитить все поддомены».

Вариант 2: Отдельные сертификаты для каждого поддомена
Можно выпускать отдельные сертификаты для ru.mysite.com, de.mysite.com и т.д.

  1. В разделе SSL/TLS выберите «Добавить сертификат» или «Выпустить».

  2. В качестве домена укажите конкретный поддомен (например, ru.mysite.com).

  3. Повторите для каждого языкового поддомена.

Когда использовать отдельные сертификаты:

  • Если хостинг не поддерживает Wildcard SSL

  • Для поддоменов на разных серверах

  • При особых требованиях безопасности

Почти все современные хостинги предоставляют бесплатные Wildcard SSL-сертификаты (например, от Let’s Encrypt) по умолчанию или в несколько кликов.

Итог Части 1

Мы выполнили всю необходимую серверную подготовку:

  • DNS настроен для автоматического направления любых поддоменов на наш сервер.

  • Хостинг обучен обрабатывать запросы ко всем поддоменам и отдавать файлы из единой корневой папки.

  • SSL обеспечивает безопасное HTTPS-соединение для всех текущих и будущих языковых версий.

Технический фундамент заложен. В следующей части мы перейдём к настройке WordPress — активируем сеть сайтов (Multisite) и подключим мультиязычность.

Понравилось — ставь «+»
Полезно? Подпишись.
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀

UPD:

Следующая публикация: Как сделать мультиязычный сайт на поддоменах в WordPress. Часть 2. Включение и настройка режима WordPress Multisite

Показать полностью 3
Отличная работа, все прочитано!