Categorie
Guide

Come convertire WordPress ad HTTPS

Con il recente annuncio di Google avere un sito HTTPS è ormai più che consigliato. Vediamo come convertire WordPress ad HTTPS senza l’utilizzo di plugin

A partire da luglio 2018 Google ha iniziato a visualizzare, per i siti non HTTPS, un avviso in merito alla sicurezza. Per i siti non HTTPS quindi, gli utenti del browser Google Chrome e solo essi per il momento, visualizzano un messaggio in cui si avvisa che il sito non è sicuro. A partire da questa data è consigliato pertanto il passaggio di tutti i siti ad HTTPS, ma come convertire WordPress ad HTTPS?

Dopo aver quindi installato il certificato sul vostro hosting e dopo aver verificato che il sito risponda correttamente sulla sua versione HTTPS, è necessario effettuare una serie di modifiche su WordPress.

Convertire WordPress ad HTTPS

Online è possibile trovare numerose guide su come convertire WordPress ad HTTPS ma la maggior parte di esse consigliano l’utilizzo di plugin, il più delle volte Really Simple HTTPS (non a caso il plugin ha più di un milione di installazioni attive), ottimo plugin, tuttavia ne sconsiglio l’utilizzo.

Il motivo è semplice, un sito WordPress con installati pochi plugin pubblici funziona meglio ed installare plugin che svolgono task in background evitabili in altro modo alleggerisce il server.

Per capire come convertire WordPress ad HTTPS senza l’utilizzo di plugin dobbiamo però fare una breve spiegazione in merito al funzionamento del nostro CMS preferito e ad una delle tabelle del database fondamentali per il suo funzionamento, ovvero wp_posts (se avete scelto un prefisso tabelle differente la tabella si chiamerà diversamente).

La tabella wp_posts su cui vengono memorizzati i dati fondamentali di tutti i post presenti sul nostro WordPress ha un campo denominato “guid” che memorizza l’indirizzo di ogni post.

Convertire WordPress ad HTTPS: la tabella wp_posts
La tabella wp_posts nella parte relativa al campo “guid”.

Really Simple HTTPS ad ogni chiamata della voce guid sostituisce http:// con https:// e questa operazione viene svolta per ogni link ed ogni incorporamento, come per le immagini, presenti sulle pagine del nostro sito WordPress. Questa operazione può essere evitata correggendo il parametro guid di ogni post direttamente sul database.

Come modificare il database di WordPress per il passaggio ad HTTPS

Per modificare le voci del campo guid è sufficiente collegarsi al database di WordPress e lanciare due semplici query SQL:

UPDATE `wp_posts` SET `guid` = REPLACE( `guid`, "http://", "https://" ) WHERE `guid` LIKE "http://%";
UPDATE `wp_posts` SET `post_content` = REPLACE( `post_content`, "http://miosito.tlc", "https://miosito.tlc" ) WHERE `post_content` LIKE "%http://miosito.tlc%";

Andrà inoltre modificata anche la tabella wp_options, mediante la seguente query SQL:

UPDATE `wp_options` SET `option_value` = replace( `option_value`, 'http://', 'https://' ) WHERE `option_name` = "siteurl";
UPDATE `wp_options` SET `option_value` = replace( `option_value`, 'http://', 'https://' ) WHERE `option_name` = "home";

Occorre precisare che nelle query va sostituito miosito.tlc con l’indirizzo del vostro WordPress (se utilizzate www dovrete aggiungerlo). Inoltre le tabelle wp_posts e wp_options dovranno avere il corretto prefisso, se ad esempio come prefisso database utilizzate mietabelle_ dovrete modificare le SQL di conseguenza e ad esempio wp_posts diventerà mietabelle_posts.

Così come ogni altra modifica che si effettua sul database di WordPress conviene, prima di agire, effettuare un backup in modo che se qualcosa va storto è sempre possibile tornare indietro.

Effettuare le modifiche al database con un plugin

Se è vero che installare pochi plugin è meglio, è anche vero che ci sono plugin che una volta svolto il loro compito possono essere disinstallati e la disinstallazione nella maggior parte dei casi (non tutti i plugin pubblici sono sviluppati in tal senso) rimuoverà anche tutte le voci sul database che avrà inserito.

Uno di questi plugin è WP Migrate DB.

Questo plugin, pensato per migrare WordPress da un hosting all’altro, utilissimo per spostare ambienti di staging in produzione e viceversa, offre anche un’ottima funzionalità di “find & replace” sul database, proprio ciò che serve nel nostro caso. Inoltre offre anche la possibilità di modificare le stringhe serializzate utilizzate da alcuni plugin che con il metodo manuale delle query SQL risultano di complicata modifica.

Dopo averlo installato dalla plugin directory di WordPress, comparirà una nuova voce nel menu “Strumenti” di WordPress, “Migrate DB”. Su questa pagina selezionate l’opzione “Find & Replace” ed inserite su Find l’indirizzo del vostro sito prima dell’HTTPS, cioè “http://miosito.tlc” su Replace invece il nuovo indirizzo, cioè “https://miosito.tlc”. Potete rimuovere l’opzione per ulteriori sostituzioni cliccando sulla “x” di fianco alla seconda sostituzione.

Convertire WordPress ad HTTPS: modificare il database con WP Migrate DB
La pagina di WP Migrate DB completata con i nostri parametri.

Una volta completata la schermata di WP Migrate DB potrete cliccare sul pulsante “Find & Replace” ed attendere che il plugin completi tutte le sostituzioni.

Anche in questo caso è consigliato effettuare un backup del database prima di lanciare le modifiche ed il backup può essere effettuato anche con lo stesso WP Migrate DB, selezionando l’opzione “Export file”, senza effettuare però alcuna sostituzione contestuale.

Attraverso l’utilizzo di WP Migrate DB vi eviterete quindi di dover lanciare le query SQL ed al termine delle operazioni potrete tranquillamente disinstallare ed eliminare il plugin.

Convertire WordPress ad HTTPS, i redirect

Ora che abbiamo modificato il database il nostro sito WordPress è pronto per HTTPS. Se ci colleghiamo quindi alla versione https:// dovrebbe rispondere correttamente ed i link dovrebbero puntare alla versione corretta dei post. Tuttavia il sito continuerà a rispondere anche nella sua versione HTTP standard, il che è un problema anche dal punto di vista SEO perché Google vedrà contenuti duplicati sul sito HTTP e sul sito HTTPS. Dovremo quindi impostare un redirect automatico su WordPress per fare sì che chi si collega alla vecchia versione HTTP venga automaticamente rediretto alla sua versione HTTPS. Per svolgere questa operazione esistono vari modi ma i pannelli di controllo di molti hosting prevedono già questa possibilità, quindi prima di procedere provate a verificare con l’hosting.

Nel caso in cui l’hosting non disponga di questa opzione abbiamo due possibilità ma la più pulita e leggera è sicuramente di agire sul file .htaccess nel caso utilizziate Apache o sul file nginx.conf nel caso utilizziate Nginix.

Come reindirizzare WordPress HTTP su HTTPS con il file .htaccess

Per impostare un redirect automatico da HTTP ad HTTPS su WordPress con il file .htaccess di Apache è suffciente aggiungere le seguenti stringhe all’interno del file .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Una volta aggiunte il redirect sarà immediatamente attivo.

Come reindirizzare WordPress HTTP su HTTPS con il file nginx.conf

Per impostare un redirect automatico da HTTP ad HTTPS su WordPress con il file nginx.conf di Nginx è sufficiente aggiungere la seguente stringa all’interno delle dichiarazioni server:

server {
    [...]
    if ($scheme != "https") {
        rewrite ^ https://$http_host$request_uri? permanent;
    }
    [...]
}

Dopo aver aggiornato il file sarà necessario prima testare la correttezza del file di configurazione lanciando il comando nginx -t, poi ricaricare il server con il comando service nginx reload.

L’aggiornamento della Google Search Console e di Google Analytics

A lavoro ultimato il sito quindi risponderà ad un nuovo indirizzo ed è per questo motivo che andrà configurato un nuovo account della Google Search Console, ma se la versione HTTP è stata autenticata con il medesimo account Google con il quale andrete a verificare questa nuova non sarà necessaria alcuna operazione di verifica in quanto il riconoscimento risulta già effettuato. Se quindi la Search Console vi chiederà di caricare un file di verifica potrete direttamente cliccare sul pulsante “verifica” in quanto il caricamento già sarà stato fatto in precedenza. Una volta effettuata la verifica potrete caricare la nuova sitemap ed attendere che venga elaborata da Google. L’indirizzo della sitemap, se presente, andrà modificato anche sul file robots.txt.

Allo stesso modo sarà necessario modificare la proprietà di Google Analytics nell’opzione “URL predefinito”, dove andrà selezionato “https://”.

Convertire WordPress ad HTTPS, problemi e controindicazioni

Se avete seguito tutte le indicazioni contenute in questa guida il vostro sito WordPress sarà ora completamente HTTPS. Questa conversione però porta con sé una controindicazione inevitabile. Infatti cambiando l’indirizzo di tutte le pagine, i numero totale di like di Facebook e di condivisione delle vostre pagine ottenuto fino a questo momento andrà perso e purtroppo non c’è modo per recuperarli. Tuttavia, essendo attivi i redirect, se un utente si collegherà ad un indirizzo condiviso in precedenza su Facebook comunque raggiungerà la pagina corretta.

Può inoltre capitare che alcune pagine siano caratterizzate da un lucchetto giallo invece che verde, il che sta ad indicare il cosiddetto contenuto misto. Questo problema dipende dal fatto che in una o più pagine del sito vengono caricati dei contenuti presenti sulla vecchia versione HTTP.

Un URL che presenta contenuto misto si presenta in questo modo.
La console di Google Chrome ci aiuta ad indentificare le risorse non sicure presenti sulla nostra pagina.

Identificare quale sia la risorsa “non sicura” non è cosa semplice in quanto spesso potrebbe trovarsi, ad esempio, all’interno di un file incorporato, come un tag adv o uno script di tracciamento. Per risolvere questo problema, però, ci viene in aiuto la console degli strumenti per sviluppatori di Google Chrome. Per verificare è necessario accedere alla pagina incriminata con Chrome dopo aver abilitato gli strumenti per sviluppatori, visualizzare poi la console sulla quale troverete un avviso relativo al file ed al suo percorso.