Nella gestione di un sito web in numerosi casi si rende necessario attivare dei redirect WordPress, ovvero dei meccanismi per cui alla richiesta di determinati indirizzi il WordPress trasferisce l’utente automaticamente su di un’altra pagina.
Pensiamo ad esempio a tutti i casi in cui si cambi la struttura dei permalink del proprio sito, oppure qualora si decidesse di modificare il permalink di una singola pagina o ancora nel caso in cui vogliamo cancellare una determinata pagina ed invece di visualizzare una comune 404, reindirizzare invece l’utente su di una pagina alternativa.
Partiamo però dalle basi.
I codici di stato HTTP
Quando si parla di redirect con WordPress, molto spesso si parla anche di impostare un 301, ma cosa è un 301? si parla di codici di stato HTTP, quelli ovvero contenuti negli header (non visibili al caricamento sul browser ma comunicati silenziosamente dal server al client) della pagina. Il codice HTTP più comune è per ovvie ragioni il 200 , cioè “OK”, che è la risposta standard che si ottiene per le richieste andate a buon fine.
I codici possono essere vari ma quelli che interessano nel nostro caso sono quelli della classe 3xx, ovvero tutti quelli aventi ad oggetto un redirect.
I codici 3xx sono:
- 300 Multiple choices;
- 301 Moved Permanently;
- 302 Found;
- 303 See Other (da HTTP/1.1);
- 304 Not Modified;
- 305 Use Proxy (da HTTP/1.1);
- 306 Switch Proxy;
- 307 Temporary Redirect (da HTTP/1.1);
- 308 Permanent Redirect (approvato come RFC sperimentale).
Nella maggior parte dei casi, quindi, il nostro redirect sarà un 301, ovvero “spostato permanentemente”.
Come verificare il codice di risposta HTTP di una pagina web? esistono diversi strumenti online per farlo, ma il modo più rapido, soprattutto se avete a disposizione un terminale linux o Mac, è quello di lanciare il comando: curl -I http://indirizzosito.tlc
sgr33n@ewh:~$ curl -I https://serverwp.cloud
HTTP/1.1 200 OK
Date: Mon, 25 Feb 2019 13:27:35 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
link: <https://wpskills.it/wp-json/>; rel="https://api.w.org/"
link: <https://wpskills.it/>; rel=shortlink
Server: Server WP Cloud
X-Powered-By: Server WP Cloud
Sull’esempio vediamo che la home del sito ha risposto 200 OK, cioè pagina raggiungibile correttamente.
Redirect WordPress: il plugin
Il modo più rapido per impostare un redirect con WordPress è sicuramente quello di utilizzare un plugin, nello specifico quello che fa parte dei miei plugin “must” e che mi sento quindi di consigliare è Redirection, completo, versatile, gratuito e leggero, non senza però aver apportato dei piccoli accorgimenti.
Dopo averlo installato dalla plugin directory di WordPress vi si presenterà automaticamente la pagina “impostazioni di base” nella quale andranno impostate due importanti opzioni.
La prima “Monitor permalink changes in WordPress posts and pages” consente di impostare automaticamente dei redirect qualora decideste di cambiare i vostri permalink e ne consiglio l’attivazione. La seconda “Keep a log of all redirects and 404 errors” è invece l’impostazione che, a mio avviso, è preferibile lasciare disattivata. Infatti tale opzione memorizzerà tutti gli accessi degli utenti ai redirect e li salverà sul database. Questi salvataggi faranno lievitare le dimensioni del vostro database, il che è sicuramente sconsigliabile sia perché alcuni hosting hanno delle limitazioni sulle dimensioni dei database, ma anche perché un database più pesante può influire negativamente sulle prestazioni del server. Il mio consiglio è quindi quello di attivare i log all’occorrenza oppure di impostare la pulizia automatica dei registri dalle impostazioni del plugin.
La fase successiva consisterà nel verificare l’accessibilità delle REST API. Infine il plugin sarà configurato ed attivo.
A questo punto troverete un nuovo menu sotto “Strumenti” denominato appunto “Redirection”. Le opzioni sono abbastanza autoesplicative ma fondamentalmente le impostazioni più importanti sono già state configurate in precedenza. In più potrete configurare per quanti giorni conservare i log, se ne avete bisogno probabilmente una settimana è un buon compromesso con lo spazio utilizzato, anche se questo parametro dipende ovviamente dal traffico generato dal sito.
Impostare un redirect con Redirection
Per impostare un redirect sarà sufficiente andare sulla scheda “Reindirizzamenti”, dove troveremo due possibilità: indicare l’indirizzo preciso oppure utilizzare un’espressione regolare, spuntando l’opzione “Regex”.
Nel primo caso sarà sufficiente compilare i campi “URL di partenza” ed “URL di arrivo”, è possibile omettere l’indirizzo del sito, quindi ad esempio URL di partenza potrebbe essere /indirizzo-vecchio/
e l’URL di arrivo potrebbe essere /indirizzo-nuovo/
.
Nel secondo caso invece abbiamo a disposizione un potente strumento per generare dei redirect automatici sulla base di regole. L’essenziale dell’utilizzo di questo strumento sta nell’utilizzo di due variabili: (.*)
può essere utilizzata nell’URL di partenza, ed indica tutto quello che compare a quel punto nell’indirizzo, mentre $1
può essere utilizzata nell’URL di arrivo e sta a definire tutta la parte presente nell’URL di partenza indicata con la precedente variabile. Un esempio però è sicuramente più esplicativo. Mettiamo il caso di aver modificato lo slug di un post type, da “automobili” ad “auto” ad esempio e nel nostro database abbiamo un centinaio di post type “automobili” che avranno cambiato indirizzo. In questo caso potremo utilizzare la seguente espressione regolare: nel campo URL di partenza andremo ad indicare /automobili/(.*)
mentre nel campo URL di arrivo andremo ad indicare /auto/$1
. In questo modo tutti i vecchi permalink del campo automobili redirigeranno automaticamente ai nuovi.
La guida completa è disponibile sul sito ufficiale del plugin: guida di Redirection.
Altri metodi per creare redirect
In alcuni casi può essere preferibile impostare dei redirect specifici a monte. Supponiamo di avere un sito con un doppio indirizzo come ad esempio un .it ed un .com, come sul nostro serverwp.cloud che risponde anche a serverwp.it. Se abbiamo impostato il dominio secondario sottoforma di alias il sito ci risponderà su entrambi gli indirizzi indistintamente ma conservando l’indirizzo utilizzato, creando sicuramente anche dei problemi SEO in quanto Google vedrà due siti identici e le copie non sono ben viste dal motore di ricerca. In questo caso consiglio di impostare un redirect a livello di server, quindi su Apache mediante il file .htaccess. e su Nginx mediante il file nginx.conf (non è sempre un file presente sull’FTP, Nginx non supporta il file .htaccess, il file nginx.conf potrebbe dover essere configurato direttamente sul pannello di controllo dell’hosting, in ogni caso fate prima un tentativo creando tale file nella root del vostro hosting).
Impostare un redirect su Apache e su Nginx
Tramite il client FTP andiamo a modificare il file .htaccess. Un file .htaccess standard di WordPress si presenta così:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Quello che dovremo fare è aggiungere il nuovo codice dopo la chiusura # END WordPress
.
# Redirect .it to .com
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?wpskills\.it$ [NC]
RewriteRule ^(.*)$ https://serverwp.cloud/$1 [R=301,L]
Il codice mostrato redirige tutto il traffico in arrivo su www.wpskills.it e wpskills.it su serverwp.cloud. Il medesimo comportamento su nginx.conf si otterrebbe con l’utilizzo del seguente codice:
server {
[...]
if ($http_host != "wpskills.it") {
rewrite ^ $scheme://serverwp.cloud$request_uri? permanent;
}
[...]
Se il sito è invece raggiungibile sia da www che non-www non sarà necessario fare nulla in quanto WordPress gestisce automaticamente i canonical, l’indirizzo preferito potrà essere impostato direttamente sul backend sul menu “Impostazioni > Generali”. Tuttavia, come vedremo di seguito, impostare troppi redirect direttamente sul server non è consigliato.
Conclusioni
Come abbiamo visto esistono diversi modi per impostare un redirect su WordPress. Occorre però precisare che tra il metodo con plugin e i redirect su .htaccess è consigliabile, a nostro avviso, utilizzare il primo. Questo perché andare ad impostare delle regole personalizzate sul file .htaccess a lungo andare finirà col rallentare il TTFB che rappresenta un valore molto importante alla luce dei Core Web Vitals. L’utilizzo del plugin consente inoltre l’accesso alle statistiche di utilizzo dei vari redirect che andiamo ad impostare e che ci permetteranno di tenere sotto controllo l’utilizzo dello stesso ed eventualmente di fare una periodica pulizia di quelli non più in uso.
Lascia un commento