WordPress: загрузить все файлы активов, поступающие с HTTP на HTTPS?

(Я использую плагин WordPress HTTPS чтобы заставить режим Admin работать под HTTPS .
Это прекрасно для панели администратора.)

Но все же, как только я под HTTPS режимом, каждая передняя страница сломана из-за того, что некоторые Front-Pages Asset Files идут как обычный HTTP (без «S»), которые затем блокируются для загрузки на страницу.

Это привело к тому, что страница выглядела беспорядочной.

Чтобы быть более ясным,

  • Когда я вызываю сайт в режиме HTTPS / SSL . Некоторые файлы активов, например:
    • http://www.my-another-site.com/something.js
    • http://www.my-another-site.com/something.css
    • http://img.wordpressask.com/ssl/something.jpg
    • … и т.д

.. БРОКЕН. (Потому что я в режиме https и эти выше файлы идут как http )

Итак, как заставить WordPress использовать FORCE LOAD для тех файлов?
(Я НЕ УХОДИТ, ЧТО ЭТО БЕЗОПАСНО ИЛИ НЕТ. Просто хочу, чтобы сайт под https://... был правильно обработан.)

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

Для правильной поддержки протокола URL-адреса должны быть либо:

  • созданный с помощью API-функции, поддерживающей протокол, из WP API (большинство, если не все функции, которые создают URL-адреса)
  • используя формат, соответствующий протоколу, например //example.com/stylesheet.css

Если вы ссылаетесь на сторонний код, вам придется отменить регистрацию и перерегистрацию ресурса соответственно или (наихудший сценарий, если очередь не используется) переписать код / ​​иметь оригинальный разработчик.

Вот что я сделал для настройки SSL для одного из клиентов.

1: Поместите это в wp-config.php , чтобы включить SSL на стороне администратора.

 define('FORCE_SSL_ADMIN', true); define('FORCE_SSL_LOGIN', true); 

2: Убедитесь, что в Settings -> General URL в обоих полях предшествует https://

3: Поместите этот фрагмент (измененный из этого урока ) в functions.php чтобы все внутренние ссылки, отличные от HTTPS, были перенаправлены на их эквиваленты HTTPS.

 function wpse_ssl_template_redirect() { if ( !is_ssl() ) { if ( 0 === strpos($_SERVER['REQUEST_URI'], 'http') ) { wp_redirect(preg_replace('|^http://|', 'https://', $_SERVER['REQUEST_URI']), 301 ); exit(); } else { wp_redirect('https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 301 ); exit(); } } } add_action( 'template_redirect', 'wpse_ssl_template_redirect', 1 );