При использовании https WordPress не использует https для CSS и JavaScript, и админка не работает. Как это исправить?

Вопрос или проблема

Недавно я создал сервер LAMP и установил на него WordPress. Я подключил его к сети через обратный SSH-туннель, используя serveo.net.

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

Я перешел в общие настройки и изменил URL на HTTP вместо HTTPS, но когда я загружаю страницы, в исходном коде URL CSS и JavaScript использует HTTP вместо HTTPS, так что они не загружатся.

Тогда часть wp-admin даже не загружается. Как это исправить?

Я посмотрел довольно много постов о том, как у людей возникали подобные проблемы, но ни один из них не помог.

Проверьте две вещи:

  • в таблице wp-options URL сайта (в двух местах) должны быть полными URL, как в https://www.example.com.
  • проверьте файл htaccess сайта на предмет правильной записи http в https.

Для правила htaccess это правило работает в большинстве случаев:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Затем проверьте файлы вашей темы, чтобы убедиться, что все ссылки на CSS/JS используют протокол https, а не http. Большинство хорошо написанных тем будут использовать относительные, а не абсолютные ссылки на файлы.

Также возможно, что плагин может указывать http вместо https.

Используйте вкладку Сеть в инструментах разработчика (обычно F12 в вашем браузере), чтобы посмотреть каждый запрос и увидеть, откуда он поступает. Если запрос идет в папку плагина, проверьте код там.

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

Причина, по которой у меня не работал HTTPS (SSL) на моем WordPress даже после изменений:

  1. Файл виртуального хоста, то есть файл <web_directory>.conf в /etc/apache2/sites-available
  2. Файл wp-config в /var/www/<web_directory>/
  3. [Для пользователей AWS EC2] Добавление балансировщика нагрузки с SSL-сертификатом для HTTPS-соединений

Если после выполнения всего этого вы можете просматривать свой сайт без работающего CSS и JavaScript, то:

Последний шаг

  1. Внутри вашей панели управления WordPress перейдите в Настройки>Общие

    • В разделе Адрес WordPress (URL) добавьте https://<вашдомен>.com
    • В разделе Адрес сайта (URL) добавьте https://<вашдомен>.com

Я обнаружил, что, когда только Адрес сайта (URL) был активирован с URL сайта, темы WordPress автоматически направляли к css-файлам с HTTPS, то есть https://<WordPressAddress>/css/index.css.

Только ваш домен имеет доступ по SSL, поэтому добавление вашего доменного имени в Адрес WordPress (URL) решило проблемы для меня.

Добавьте этот код в wp-config.php в корневой папке вашего wordpress.
Также в Общих настройках на панели администратора измените http на https для вашего siteurl и home.

define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
   $_SERVER['HTTPS']='on';

У меня была такая же проблема, когда я размещал свой сайт на Azure Web App Service Linux.

Попробуйте этот плагин. Будьте осторожны, когда он активен, он работает.
https://wordpress.org/plugins/jsm-force-ssl/

Этот плагин использует нативные фильтры WordPress, вместо PHP-буфера вывода, для максимальной надежности, производительности и совместимости с кэшированием (этот плагин не влияет на производительность кэширования), а также 301 постоянные перенаправления для лучшего SEO (301 перенаправления считаются лучшими для SEO при переходе с HTTP на HTTPS).

Учитывает переменные прокси/балансировки нагрузки для крупных хостинг-сред:

HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Требования:

Ваш веб-сервер должен быть настроен с SSL-сертификатом и способен обрабатывать HTTPS-запросы. 😉

Просто активируйте плагин, и вы готовы:

Нет настроек плагина для изменения, и никаких изменений не вносится в вашу конфигурацию WordPress — просто активируйте или деактивируйте плагин, чтобы включить/выключить фильтры и динамические перенаправления.

Ответ или решение

Когда вы настраиваете свой сайт на WordPress с использованием HTTPS и сталкиваетесь с проблемами загрузки CSS и JavaScript, а также недоступностью панели управления wp-admin, это может быть вызвано несколькими факторами. В этой статье мы подробно рассмотрим шаги, которые необходимо предпринять для устранения данных проблем, а также действия, которые помогут вам правильно настроить SSL на вашем сервере.

Важные шаги для устранения проблем с HTTPS на WordPress

  1. Проверка URL в настройках WordPress
    В первую очередь, убедитесь, что URL сайта настроены правильно:

    • Перейдите в Настройки > Общие в админ-панели WordPress.
    • Убедитесь, что поля Адрес WordPress (URL) и Адрес сайта (URL) содержат https://вашдомен.com. Это важно для правильной работы с HTTPS.
  2. Корректировка wp-config.php
    Внесите следующие изменения в файл wp-config.php, который находится в корневой директории WordPress. Это поможет принудительно использовать SSL:

    define('FORCE_SSL_ADMIN', true);
    if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';
  3. Редирект HTTP на HTTPS через .htaccess
    Необходимо убедиться, что все запросы к вашему сайту автоматически перенаправляются на HTTPS. Откройте файл .htaccess, который находится в корневой директории вашего сайта, и добавьте следующие строки:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  4. Проверка темы и плагинов
    В некоторых случаях проблема может быть вызвана конфликтами в теме или плагинах. Проверьте, не ссылаются ли они на ресурсы через HTTP. Если в коде темы есть жестко прописанные ссылки на CSS или JavaScript, измените их на относительные ссылки или укажите HTTPS.

  5. Использование плагинов для обработки SSL
    Попробуйте установить плагин, который автоматически обрабатывает перенаправления на HTTPS и исправляет возможные проблемы. Например, вы можете использовать плагин JSM Force SSL. Он автоматически устанавливает необходимые фильтры и перенаправления без необходимости в ручных изменениях.

Дополнительные меры

  • Проверка виртуального хоста Apache
    Если ваше окружение использует Apache, убедитесь, что настройки виртуального хоста корректны и поддерживают HTTPS. В файле конфигурации виртуального хоста убедитесь, что у вас есть директива SSLEngine on и указаны корректные пути к SSL-сертификату.

  • Обновление URL в базе данных (если требуется)
    В случае, если ссылки по-прежнему указывают на HTTP, возможно, потребуется обновить их в базе данных. Это можно сделать с помощью SQL-запроса или используя плагины, такие как Better Search Replace.

Заключение

Настройка HTTPS на вашем WordPress сайте может потребовать некоторой тщательной доработки, но следуя вышеописанным шагам, вы сможете устранить большинство проблем с загрузкой CSS и JavaScript, а также обеспечить доступ к панели управления wp-admin. Не забывайте периодически проверять конфигурации и делать резервные копии вашего сайта перед внесением изменений. Помните, что безопасность вашего сайта — это инвестиция, которая всегда окупается.

Оцените материал
Добавить комментарий

Капча загружается...