Как настроить HTTPS для мультисайтовой сети WordPress

Пошаговый гайд, как включить HTTPS для мультисайтов WordPress без головной боли и ошибок

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Современный интернет требует обязательного использования защищённого протокола HTTPS. Это особенно важно для мультисайтовых сетей WordPress (Multisite), где под одной установкой работает множество сайтов. Ниже — пошаговая инструкция, как правильно перейти на HTTPS и избежать ошибок.

Оглавление

  1. Зачем нужен HTTPS мультисайту
  2. Подготовка: SSL-сертификат и DNS
  3. Настройка wp-config.php
  4. Обновление базы данных
  5. Редирект 301 со всех доменов
  6. Решение типичных проблем
  7. Бонус: автоматизация обновлений

Зачем HTTPS важен для Multisite

  • Безопасность данных — шифрование трафика между сервером и пользователями.
  • SEO-плюсы — Google отдаёт предпочтение HTTPS-сайтам.
  • HTTP/2 и HTTP/3 — работают только поверх HTTPS.
  • Cookie & Auth — защита авторизационных токенов админов всех подсайтов.

Подготовка: SSL-сертификат и DNS

2.1 Получение wildcard-сертификата

Для мультисайта, где используются поддомены .example.com, удобнее всего wildcard:

  1. Установите Certbot:
    sudo apt install certbot python3-certbot-nginx
  2. Выпустите сертификат:
    sudo certbot certonly --nginx -d .example.com -d example.com

2.2 DNS-записи

Убедитесь, что в DNS есть:

  • A-запись *.example.com → IP_сервера
  • A-запись example.com → IP_сервера
  • При использовании подпапок (/site2) дополнительных записей не требуется.

Настройка wp-config.php

3.1 Перенаправить все схемы на HTTPS

Добавьте до строки /* That's all... /:

/ Включаем HTTPS для всех сайтов сети */
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
 $_SERVER['HTTPS']='on';

3.2 Переписываем домены (при необходимости)

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

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

Обновление базы данных

4.1 Заменить URL в wp_blogs

UPDATE wp_blogs
SET domain = REPLACE(domain, 'http://', 'https://');

4.2 Заменить URL в wp_options (каждого сайта)

-- для главного сайта
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name='home';
UPDATE wp_options SET option_value = 'https://example.com' WHERE option_name='siteurl';

-- для подсайта 2
UPDATE wp_2_options SET option_value = 'https://site2.example.com' WHERE option_name='home';
...

4.3 Поиск/замена в контенте

Используйте WP-CLI:

wp search-replace 'http://example.com' 'https://example.com' --network --all-tables --dry-run
wp search-replace 'http://example.com' 'https://example.com' --network --all-tables

Редирект 301 со всех доменов

5.1 Nginx

server {
 listen 80;
 server_name example.com .example.com;
 return 301 https://$host$request_uri;
}

5.2 Apache (.htaccess в корне)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Решение типичных проблем

  • «Смешанный контент» (Mixed Content)
    Включите режим upgrade-insecure-requests через плагин SSL Insecure Content Fixer.
  • Циклические редиректы
    Проверьте $_SERVER['HTTPS']='on' в wp-config.php.
  • Обновление картинок/статики CDN
    Смените URL в настройках CDN на https://.
  • Ошибка NET::ERR_CERT_AUTHORITY_INVALID
    Убедитесь, что в сертификате прописан wildcard .example.com.

Бонус: автоматизация обновлений сертификатов

sudo crontab -e
0 2  * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"

Полезные плагины

  • Really Simple SSL — автоматически исправляет mixed-content.
  • Wordfence — сканирование на HTTPS-ошибки.
  • WP-CLI — массовая замена URL в базе.

После выполнения всех шагов у вас будет полностью защищённая мультисайтовая сеть WordPress, которая:

  1. Шифрует весь трафик;
  2. Улучшает SEO-позиции;
  3. Уменьшает риски утечки данных между подсайтами.

Не забудьте протестировать каждый сайт в панели администратора сети и проверить SSL Labs Test.