WordPress, come passare da http a https (e aumentare le visite al sito)
Le operazioni necessarie per gestire correttamente il cambio di indirizzo del sito dal vecchio formato http al nuovo protocollo sicuro https
Nell’articolo precedente abbiamo parlato delle tipologie di certificati SSL, quale scegliere per il nostro sito e come acquistarlo. Noi, grazie al nostro fornitore di hosting, l’abbiamo acquistato tramite il pannello di controllo hosting cPanel. Questa operazione ha due grossi vantaggi: il certificato di cui ha bisogno il nostro sito ha un prezzo molto accessibile, e inoltre il certificato – una volta rilasciato dall’authority competente – viene direttamente installato sul nostro server. Non dobbiamo preoccuparci di nulla, se non della parte post installazione, ovvero fare le opportune modifiche al nostro wordpress per gestire correttamente il cambio da http ad https senza avere errori nel sito e senza perdere posizionamenti sui motori di ricerca. Anzi, il cambio a protocollo sicuro in teoria ci porterà più visite.
Dopo aver installato il certificato sul server dobbiamo mettere mano alla nostra installazione wordpress per cambiare le impostazioni (url, media) da http a https. In sostanza si tratta di trasformare le pagine vecchie in pagine nuove, e pertanto non dobbiamo lasciare errori nei link interni, nel caricamento delle immagini, oltre che reindirizzare le pagine linkate da siti esterni verso le la nuova struttura url. Può sembrare un lavoraccio, ma in realtà seguendo pochi semplici passaggi possiamo già sistemare il 95% di tutta la struttura (il restante 5% lo scopriremo in seguito grazie a qualche verifica post migrazione).
1) Cambio della struttura dei permalink
Semplice ma fondamentale. Fare il login nel pannello di amministrazione wordpress, andare nel menu Impostazioni e poi su Permalink. Si tratta di quella impostazione che si setta una volta nella vita quando installi wordpress e poi ci si mette mano in occasioni straordinarie. Ecco questa è una di quelle. Nella schermata seguente dei aggiungere la s all’http, ovvero cambiare il percorso del sito da http ad https, come nella figura:
Salvate. Il sistema ora vi farà fare il logout, e vi reindirizzerà alla nuova pagina di login https://www.vostrosito.com/wp-login.php . Potete rientrare con stessi username e password di sempre.
2) Reindirizzare da http ad https tutte le url del sito
Ora dobbiamo impostare il redirect di tutti gli indirizzi da http ad https, in modo che ogni link/richiesta ad una vecchia pagina tipo http://www.miosito.net/articolo-numero-1/ venga automaticamente indirizzata alla nuova https://www.miosito.net/articolo-numero-1/ . Per fare questo, dobbiamo inserire queste poche righe di codice nel file .htaccess . Quindi, tramite un programma FTP oppure tramite il gestore file del nostro pannello hosting, andiamo ad editare il file .htaccess che si trova nella directory principale dell’installazione wordpress (in genere in /home/vostroaccount/public_html/ ). Ecco le righe da inserire all’inizio:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.tuttoblog.com/$1 [R,L] </IfModule>
Dove ovviamente al posto di tuttoblog.com metterete l’indirizzo del vostro sito. Dopo aver inserito il codice e aver salvato il file, ogni vostro indirizzo url verrà automaticamente reindirizzato, in maniera permanente, alla nuova versione https. Come ad esempio la vecchia pagina in esempio
ricaricando la pagina (tasto F5), verrà automaticamente reindirizzata alla versione https, e comparirà il lucchetto che sancisce la sicurezza del sito
Cliccando sul lucchetto, è possibile avere informazioni aggiuntive, ovvero la dicitura “sito sicuro” e ulteriori informazioni sul certificato e da chi è stata emessa la certificazione:
Finito? Diciamo che oltre il 75% del lavoro è già fatto. Se il sito è recente, o comunque è stato realizzato in maniera corretta, allora siamo vicini al 100%. Cosa può essere sfuggito? Immagini e iframe possono causare errore di sicurezza ed impedire al sito di essere sicuro al 100%. Ad esempio il caricamento di immagini interne che abbiamo inserito utilizzando un percorso assoluto. Se la nostra pagina di esempio è ora con indirizzo https://www.nostrosito.it/pagina1/ , e al suo interno un’immagine è stata inserita con percorso tipo
<img src="http://www.nostrosito.it/immagine1.jpg" />
allora dovremmo modificare anche questa aggiungendo la s all’http. Ma come facciamo se abbiamo molte immagini da sistemare? Un aiuto ci viene utilizzando in modo corretto il phpmyadmin che gestisce il database: con queste poche istruzioni possiamo cambiare tutti i percorsi di tutte le immagini incluse nei nostri post e nelle nostre pagine. In sostanza, dobbiamo dire alla macchina che ogni volta che (nel database) trova il tag immagine
src=”http:// lo deve sostituire con il codice src=”// , ovvero il percorso relativo. L’ideale, è avere le immagini richiamate in questo modo:
<img src="//example.com/image.jpg" alt="nome immagine">
In questo modo, le immagini che nel nostro wordpress sono inserite con il percorso relativo, sarà il nostro wordpress ad attribuirgli il giusto https davanti. Attenzione: questa istruzione, inserita nello spazio istruzioni sql del nostro phpmyadmin, è irreversibile. Pertanto è opportuno fare un backup del database. Per passare anche le immagini in https andare nel pannello hosting fornito dal vostro provider, aprire il phpmyadmin. Una volta aperto, selezionate il database del vostro wordpress (generalmente trovate solo un database). Nella schermata che si apre, cliccare sul tab “SQL” in alto:
Qui possiamo inserire questa istruzione che sostituisce il percorso immagine all’interno del contenuto di post e pagine.
UPDATE wp_posts SET post_content = ( Replace (post_content, 'src="http://', 'src="//') ) WHERE Instr(post_content, 'jpeg') > 0 OR Instr(post_content, 'jpg') > 0 OR Instr(post_content, 'gif') > 0 OR Instr(post_content, 'png') > 0;
La ripetiamo nel caso siano state inserite con l’apostrofo ‘ anzichè con le doppie virgolette ” (thanks to css-tricks.com)
UPDATE wp_posts SET post_content = ( Replace (post_content, "src='http://", "src='//") ) WHERE Instr(post_content, 'jpeg') > 0 OR Instr(post_content, 'jpg') > 0 OR Instr(post_content, 'gif') > 0 OR Instr(post_content, 'png') > 0;
Secondo lo stesso criterio, aggiusteremo non solo il percorso delle immagini, ma anche quello degli iframes (come ad esempio un video di youtube o un widget con una mappa). Anche questi tag non devono più comparire nella forma
<iframe src="http://
bensì nella forma
<iframe src="https://
Con il codice seguente, lo sistemiamo all’interno dei postmeta:
UPDATE wp_postmeta SET meta_value=(REPLACE (meta_value, 'iframe src="http://','iframe src="//'));
Dopo aver lanciato le query sql appena menzionate, il vostro phpmyadmin vi indicherà l’esito e quante sostituzioni ha effettuato:
3) Operazioni aggiuntive e opzionali
Per rendere più sicuro il pannello di amministrazione, possiamo forzare l’utilizzo del protocollo https anche per tutte le pagine di gestione del sito. E’ sufficiente andare ad editare il file wp-config.php che si trova sempre nella directory principale, andando ad aggiungere il seguente codice:
define('FORCE_SSL_ADMIN', true);
Devi informare Google del cambio di dominio da http ad https? Se utilizzi Google Webmaster Tools la risposta è sì. Attenzione: con il redirect 301 che abbiamo inserito (vedi sopra), ogni volta che un motore di ricerca visita il nostro sito viene automaticamente informato che gli url sono cambiati e quali sono quelli nuovi. Un po’ di tempo e il cambio viene digerito. Ma se usi il GWT, allora come indicato da Google qui, è bene inserire la nuova proprietà (dominio con https) e segnalare il cambio nella vecchia proprietà.
Ora non ti resta che navigare nel tuo sito (se hai un sistema di cache svuota tutto), e verificare che le immagini si carichino correttamente (non dovrebbero esserci problemi) e che sopratutto l’icona del certificato sia ok (se il sito ancora carica immagini non https allora ti comparirà errore). Come è andato il passaggio verso il sito più sicuro?
Ciao e complimenti, ottimo articolo. E per recuperare i commenti facebook e passarli da http ad https, come fare?
Ciao, al momento cosa utilizzi per i commenti? Hai integrato un plugin tipo Facebook Comment, ovvero l’utente utilizza la piattaforma Facebook per inserire il proprio commento?
ciao,
ho cambiato il tema wordpress e il problema me lo da solo sul carimento dell’immagine del logo
come faccio? se lascio il logo originale del tema wordpress mi da il sito sicuro
da pannello di controllo del tema non posso inserire la url de logo in http
Potresti:
1) editare direttamente il tema: sotto Aspetto, selezioni Editor, dopodichè (sulla destra) selezione il file header.php . Al suo interno troverai la riga che richiama il logo: se in http semplicemente aggiungi la esse all’url. Se non lo fai nel tema child al prossimo aggiornamento del tema il tutto verrà sovrascritto, ma dubito che lo sviluppatore – se rilascia un update – non sistemi questa cosa. Oppure in alternativa
2) installi ed attivi un plugin del tipo “Fix non secure content” o simile, che in automatico va a cambiare questo tipo di url non aggiornati all’https
Facci sapere.
ciao, grazie per i suggerimenti. Considerato che il problema era solo sul caricamento della favicon e del logo ho optato per la prima scelta. Al prossimo update del tema, prima farò un backup dell’header per riportare le stesse impostazioni inserite “a mano”