wpssl.ru wordpress WPSSL.ru

Настройка SSL для WordPress Multisite: пошаговое руководство

WordPress Multisite — мощный инструмент для создания сети сайтов на одной установке WordPress. Но при использовании HTTPS и SSL-сертификатов в такой среде часто возникают специфические проблемы, которые сложно решить без глубокого понимания нюансов. В этой статье подробно разберём, как правильно настроить SSL для WordPress Multisite, чтобы обеспечить безопасность всей сети и избежать типичных ошибок.

Что такое WordPress Multisite и почему важен SSL для всех сайтов сети

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

При работе с SSL важно, чтобы все сайты сети корректно обслуживались по HTTPS. Ошибки настройки приводят к предупреждениям о небезопасном контенте, нарушению работы плагинов и ухудшению SEO. Особенно это актуально для сайтов с разными доменами (Domain Mapping).

Для мультисайтовой сети рекомендуют использовать либо wildcard-сертификат для поддоменов, либо отдельные сертификаты для каждого домена. Но даже с правильным сертификатом можно столкнуться с проблемами из-за особенностей конфигурации WordPress и веб-сервера.

Основные задачи при настройке SSL для Multisite

  • Обеспечить корректный HTTPS для всех сайтов сети;
  • Избежать смешанного контента (mixed content) при загрузке ресурсов;
  • Настроить правильные редиректы с HTTP на HTTPS;
  • Гарантировать работоспособность логина и админки через HTTPS;
  • Решить вопросы с Domain Mapping и сертификатами для разных доменов.

Выбор и установка SSL-сертификата для Multisite

Если ваша сеть использует поддомены (например, site1.example.com, site2.example.com), удобнее всего использовать wildcard-сертификат. Он покрывает все поддомены по маске *.example.com.

Для сайтов с разными доменами (например, example1.com, example2.ru) понадобится либо сертификат для каждого домена, либо мультидоменный сертификат (SAN сертификат). Let's Encrypt позволяет бесплатно получить wildcard и мультидоменные сертификаты, но их нужно ежегодно обновлять.

Для установки сертификата можно использовать плагины, которые автоматизируют работу с Let's Encrypt, например, Clearfy Pro поддерживает интеграцию с SSL-сертификатами и оптимизацией безопасности.

Пример установки wildcard сертификата на Apache

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
ServerName example.com
ServerAlias *.example.com

После установки сертификата в конфигурации веб-сервера важно перезапустить службу, например, sudo systemctl restart apache2.

Настройка HTTPS в WordPress Multisite: основные шаги

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

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

В мультисайте для каждого сайта прописаны URL в базе данных — в таблицах wp_blogs, wp_site, wp_options и пр. Нужно заменить все http:// на https://.

Для этого удобно использовать плагин Clearfy Pro или WP-CLI команду:

wp search-replace 'http://example.com' 'https://example.com' --network --skip-columns=guid

Важно использовать параметр --network для замены во всех сайтах сети.

2. Принудительное использование HTTPS в сети

Добавьте в wp-config.php следующие строки, чтобы заставить WordPress использовать HTTPS во всех запросах:

define('FORCE_SSL_ADMIN', true);

// Функция для принудительного HTTPS в мультисайте
function wpssl_force_ssl_multisite() {
    if (!is_ssl()) {
        wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301);
        exit();
    }
}
add_action('template_redirect', 'wpssl_force_ssl_multisite');

3. Настройка редиректов на уровне веб-сервера

Для Apache добавьте в .htaccess правила, которые перенаправят все HTTP-запросы на HTTPS:

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

Для Nginx:

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

Решение проблем со смешанным контентом и SSL в Multisite

Одна из распространённых проблем — смешанный контент, когда на HTTPS-сайте загружаются ресурсы по HTTP. Это вызывает предупреждения браузера и снижает безопасность.

Использование плагинов для исправления mixed content

Плагин Clearfy Pro умеет исправлять ссылки в контенте и скриптах, заменяя http на https. Также подойдёт Really Simple SSL, но для мультисайта его нужно настраивать аккуратно.

Пример функции для фильтрации контента и замены HTTP на HTTPS

function wpssl_replace_http_to_https($content) {
    if (is_ssl()) {
        $content = str_replace('http://', 'https://', $content);
    }
    return $content;
}
add_filter('the_content', 'wpssl_replace_http_to_https');

Эту функцию можно добавить в файл functions.php активной темы или в кастомный плагин.

Особенности работы с Domain Mapping и SSL

Если в мультисайте используются разные домены, например, через плагин Domain Mapping, нужно обеспечить, чтобы для каждого домена был свой SSL-сертификат.

Современные версии WordPress поддерживают нативно домены, но для правильной работы SSL часто используют плагин Clearfy Pro с функцией управления доменами и безопасностью.

Важно настроить веб-сервер так, чтобы сертификат подставлялся корректно для каждого домена, а WordPress понимал, что нужно отдавать сайт именно по HTTPS с нужным доменом.

Отладка и проверка SSL в WordPress Multisite

После настройки SSL важно проверить корректность работы:

  • Проверьте, что все сайты открываются по HTTPS без ошибок;
  • Используйте инструменты типа SSL Labs для проверки сертификата;
  • Проверьте консоль браузера на предмет mixed content;
  • Убедитесь, что AJAX и REST API запросы работают корректно через HTTPS;
  • Проверьте работу плагинов и административной панели.

В случае ошибок в AJAX-запросах можно добавить фильтр для правильного определения схемы HTTPS:

function wpssl_fix_rest_api_https($url) {
    if (is_ssl()) {
        $url = preg_replace("/^http:/i", "https:", $url);
    }
    return $url;
}
add_filter('rest_url', 'wpssl_fix_rest_api_https');
×
WordPress
дай сайту суперсилу!

Скидки на топовые темы и плагины

Активировать суперсилу ⋙