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' />
John Tippin
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?
Rick Hellewell
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
John Tippin
Hai qualche plugin di caching? Il tuo htaccess sta riscrivendo http in https?
Rick Hellewell
gli unici plugin che ho sono akismet, loginizer, really simple ssl e wordfence
John Tippin
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 .
Rick Hellewell
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>.confall'interno di/etc/apache2/sites-available - Il file
wp-configall'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.