Quando uso https, WordPress non usa https per CSS e JavaScript e l'admin non funziona. Come risolvere?
Recentemente ho configurato un server LAMP e installato WordPress. L'ho connesso al web tramite un tunnel SSH inverso usando serveo.net.
Ho deciso di aggiungere SSL e il resto del sito sembra funzionare bene, ma WordPress continua a non funzionare quando provo a usare SSL.
Sono andato nelle impostazioni generali e ho cambiato gli URL da HTTP a HTTPS, ma quando carico le pagine, nel codice sorgente gli URL di CSS e JavaScript usano ancora HTTP invece di HTTPS, quindi non si caricano.
Inoltre la parte wp-admin
non si carica affatto. Come posso risolvere?
Ho guardato diversi post di persone con problemi simili, ma nessuno mi ha aiutato.
Verifica due cose:
- nella tabella wp-options, gli URL del sito (in due punti) dovrebbero essere l'URL completo, come in https://www.example.com.
- controlla il file htaccess del sito per assicurarti che la riscrittura da http a https sia corretta.
Per una regola htaccess, questa funziona nella maggior parte dei casi:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Poi controlla i file del tuo tema per assicurarti che eventuali riferimenti a CSS/JS includano il protocollo https, non http. La maggior parte dei temi ben scritti utilizza riferimenti relativi piuttosto che assoluti per i file da includere.
È anche possibile che un plugin stia specificando http invece di https.
Utilizza la scheda Network negli Strumenti per Sviluppatori (di solito F12 nel tuo browser) per esaminare ogni richiesta e vedere da dove proviene. Se la richiesta è rivolta a una cartella di un plugin, controlla il codice al suo interno.

Sto utilizzando il tema predefinito. twentynineteen. Le voci del database sono corrette, ma la sezione head contiene elementi come <link rel='stylesheet' id='wp-block-library-css' href='http://jtjumper.serveo.net/wp/wp-includes/css/dist/block-library/style.min.css?ver=5.0.3' type='text/css' media='all' /> <link rel='stylesheet' id='wp-block-library-theme-css' href='http://jtjumper.serveo.net/wp/wp-includes/css/dist/block-library/theme.min.css?ver=5.0.3' type='text/css' media='all' />

Se guardo il codice sorgente della pagina sul mio sito di test (hostato) con il tema 2019, l'href per quelle dichiarazioni include il protocollo https:. E ho l'htaccess mostrato nella mia risposta. E la mia tabella wp-options contiene https://www.example.com , non solo www.example.com . Forse il tuo non è configurato in questo modo?

Non c'è abbastanza spazio nei commenti per il sorgente ma questo è il link per la pagina https://jtjumper.serveo.net/wp/ la mia tabella wp-options contiene entrambi, entrambi con https

Hai qualche plugin di caching? Il tuo htaccess sta riscrivendo http in https?

gli unici plugin che ho sono akismet, loginizer, really simple ssl e wordfence

Disabilita tutti i tuoi plugin (specialmente really simple ssl). Poi imposta il tuo htaccess come mostrato. Quindi esegui un plugin di ricerca/sostituzione (mi piace "Better Search and Replace") e cerca http://www.yourdomain.com e sostituiscilo con https://www.yourdomain.com .

Questa risposta risolve la maggior parte dei problemi e spero che tu l'abbia già consultata.
La ragione per cui l'HTTPS (SSL) non funzionava sul mio WordPress, anche dopo aver modificato:
- Il file Virtual Host, ovvero il file
<web_directory>.conf
all'interno di/etc/apache2/sites-available
- Il file
wp-config
all'interno di/var/www/<web_directory>/
- [Per utenti AWS EC2] Aggiunta di un load balancer con un certificato SSL per connessioni HTTPS
Se dopo aver fatto tutto questo, riesci a visualizzare il tuo sito web senza che CSS e JavaScript funzionino, allora:
Ultimo passaggio
Nella dashboard di WordPress, vai su
Impostazioni>Generali
- Sotto
Indirizzo WordPress (URL)
, aggiungihttps://<tudominio>.com
- Sotto
Indirizzo del sito (URL)
, aggiungihttps://<tudominio>.com
- Sotto
Ho scoperto che, quando solo Indirizzo del sito (URL)
è stato attivato con l'URL del sito, i temi di WordPress reindirizzano automaticamente i file CSS con HTTPS, ovvero https://<WordPressAddress>/css/index.css
.
Solo il tuo dominio ha accesso SSL, quindi aggiungendo il nome del tuo dominio in Indirizzo WordPress (URL)
ha risolto i problemi per me.

Aggiungi questo codice al file wp-config.php
nella cartella root di WordPress
.
Inoltre, nelle Impostazioni Generali
del Pannello di Amministrazione, cambia da http
a https
per il tuo siteurl e home.
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';

Ho avuto lo stesso problema quando ho ospitato il mio sito su Azure webapp service Linux.
Prova questo plugin. Fai attenzione quando è attivo funziona. https://wordpress.org/plugins/jsm-force-ssl/
Questo plugin utilizza i filtri nativi di WordPress, invece del buffer di output di PHP, per massima affidabilità, prestazioni e compatibilità con la cache (questo plugin non influisce sulle prestazioni della cache), insieme a reindirizzamenti 301 permanenti per il miglior SEO (i reindirizzamenti 301 sono considerati i migliori per il SEO quando si passa da HTTP a HTTPS).
Rispetta le variabili di proxy / load-balancing per ambienti di hosting di grandi dimensioni:
HTTP_X_FORWARDED_PROTO HTTP_X_FORWARDED_SSL Requisiti:
Il tuo server web deve essere configurato con un certificato SSL e in grado di gestire richieste HTTPS.
Basta attivare il plugin e il gioco è fatto:
Non ci sono impostazioni del plugin da modificare, e non vengono apportate modifiche alla tua configurazione WordPress — semplicemente attiva o disattiva il plugin per abilitare / disabilitare i filtri e i reindirizzamenti dinamici.
