Вопрос или проблема
Недавно я создал сервер 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 даже после изменений:
- Файл виртуального хоста, то есть файл
<web_directory>.conf
в/etc/apache2/sites-available
- Файл
wp-config
в/var/www/<web_directory>/
- [Для пользователей AWS EC2] Добавление балансировщика нагрузки с SSL-сертификатом для HTTPS-соединений
Если после выполнения всего этого вы можете просматривать свой сайт без работающего CSS и JavaScript, то:
Последний шаг
-
Внутри вашей панели управления 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
-
Проверка URL в настройках WordPress
В первую очередь, убедитесь, что URL сайта настроены правильно:- Перейдите в Настройки > Общие в админ-панели WordPress.
- Убедитесь, что поля Адрес WordPress (URL) и Адрес сайта (URL) содержат
https://вашдомен.com
. Это важно для правильной работы с HTTPS.
-
Корректировка 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';
-
Редирект HTTP на HTTPS через .htaccess
Необходимо убедиться, что все запросы к вашему сайту автоматически перенаправляются на HTTPS. Откройте файл.htaccess
, который находится в корневой директории вашего сайта, и добавьте следующие строки:RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
-
Проверка темы и плагинов
В некоторых случаях проблема может быть вызвана конфликтами в теме или плагинах. Проверьте, не ссылаются ли они на ресурсы через HTTP. Если в коде темы есть жестко прописанные ссылки на CSS или JavaScript, измените их на относительные ссылки или укажите HTTPS. -
Использование плагинов для обработки SSL
Попробуйте установить плагин, который автоматически обрабатывает перенаправления на HTTPS и исправляет возможные проблемы. Например, вы можете использовать плагин JSM Force SSL. Он автоматически устанавливает необходимые фильтры и перенаправления без необходимости в ручных изменениях.
Дополнительные меры
-
Проверка виртуального хоста Apache
Если ваше окружение использует Apache, убедитесь, что настройки виртуального хоста корректны и поддерживают HTTPS. В файле конфигурации виртуального хоста убедитесь, что у вас есть директиваSSLEngine on
и указаны корректные пути к SSL-сертификату. -
Обновление URL в базе данных (если требуется)
В случае, если ссылки по-прежнему указывают на HTTP, возможно, потребуется обновить их в базе данных. Это можно сделать с помощью SQL-запроса или используя плагины, такие как Better Search Replace.
Заключение
Настройка HTTPS на вашем WordPress сайте может потребовать некоторой тщательной доработки, но следуя вышеописанным шагам, вы сможете устранить большинство проблем с загрузкой CSS и JavaScript, а также обеспечить доступ к панели управления wp-admin. Не забывайте периодически проверять конфигурации и делать резервные копии вашего сайта перед внесением изменений. Помните, что безопасность вашего сайта — это инвестиция, которая всегда окупается.