Современный интернет требует обязательного использования защищённого протокола HTTPS. Это особенно важно для мультисайтовых сетей WordPress (Multisite), где под одной установкой работает множество сайтов. Ниже — пошаговая инструкция, как правильно перейти на HTTPS и избежать ошибок.
Оглавление
- Зачем нужен HTTPS мультисайту
- Подготовка: SSL-сертификат и DNS
- Настройка wp-config.php
- Обновление базы данных
- Редирект 301 со всех доменов
- Решение типичных проблем
- Бонус: автоматизация обновлений
Зачем HTTPS важен для Multisite
- Безопасность данных — шифрование трафика между сервером и пользователями.
- SEO-плюсы — Google отдаёт предпочтение HTTPS-сайтам.
- HTTP/2 и HTTP/3 — работают только поверх HTTPS.
- Cookie & Auth — защита авторизационных токенов админов всех подсайтов.
Подготовка: SSL-сертификат и DNS
2.1 Получение wildcard-сертификата
Для мультисайта, где используются поддомены .example.com, удобнее всего wildcard:
- Установите Certbot:
sudo apt install certbot python3-certbot-nginx
- Выпустите сертификат:
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, которая:
- Шифрует весь трафик;
- Улучшает SEO-позиции;
- Уменьшает риски утечки данных между подсайтами.
Не забудьте протестировать каждый сайт в панели администратора сети и проверить SSL Labs Test.