Nelle scorse puntate abbiamo chiarito il ruolo del sottodominio www e discusso come la coesistenza di nomi diversi per lo stesso sito possa diminuire l'efficacia del SEO, dividendo i riferimenti alle pagine in due parti: i link preceduti da www e quelli senza www.

E' importante chiarire che non stiamo parlando del re-indirizzamento DNS del dominio o del subdominio: se raggiungiamo una pagina in entrambi i modi (sia col prefisso www che senza) significa che il servizio DNS è configurato correttamente. I server DNS provvedono a risolvere il nome verso lo stesso server, perciò “tutto va bene” dal punto di vista dell'ipotetico visitatore. Le cose cambiano dal punto di vista dei motori di ricerca. Una prova molto semplice potrebbe essere quella di confrontare due modi di scrivere l'URL di AziendeItalia

http://aziendeitalia.com

https://www.aziendeitalia.com

dopo aver verificato di raggiungere la stessa pagina in ambo i casi, è interessante osservare cosa succede nella barra dell'indirizzo del browser. I casi sono due

  1. Dopo aver caricato la pagina entrambi gli indirizzi restano invariati
  2. Dopo aver caricato la pagina uno degli indirizzi si allinea automaticamente all'altro

le due situazioni sono indifferenti dal punto di vista dell'utente, ma impattano il Page Rank della pagina: se gli indirizzi restano invariati, un ipotetico motore di ricerca che sta seguendo un link alla pagina, o analizzando il sito, tratterà i due indirizzi come casi distinti. Ad esempio, se 10 link puntano alla pagina senza www, e 10 link puntano alla pagina con www, lo scenario 1 significa che il motore di ricerca conterà 10 link (e non 20) per ciascuno dei due indirizzi. Nello scenario 2, invece, grazie alla correzione automatica dell'indirizzo, il motore di ricerca conterà 20 link totali.

L'esempio dovrebbe spiegare perché, nonostante il DNS risolva correttamente entrambi gli indirizzi, il fatto di avere due URL equivalenti (ma distinti) riduca l'efficacia del SEO. Se ci troviamo nello scenario 1, possiamo usare un tool per capire come vengono divisi i “punteggi” del motore di ricerca.

Un problema di questo genere si risolve scegliendo uno dei due indirizzi, probabilmente quello più “gettonato” dei due, e decidere che tale indirizzo diventerà il riferimento canonico al nostro server. Si potrebbe poi pensare di “educare” tutte le persone che referenziano il sito, chiedendo loro di usare solo l'indirizzo canonico. Da un punto di vista tecnico la cosa funzionerebbe, ma non è questa la soluzione: un domani nuovi e numerosi link (ci auspichiamo) potrebbero puntare al nostro sito, e non possiamo certo prenderci la briga di comunicare a tutti, o pretendere da tutti, di aggiornare il link che abbiamo scelto come indirizzo canonico.

Un'ottima soluzione, molto più semplice ed indolore, ci viene offerta dallo stesso protocollo HTTP, che offre la possibilità del redirect HTTP 301.

Per capire il funzionamento del redirect HTTP 301 possiamo controllare l'header HTTP delle risposta tramite i comuni strumenti di sviluppo web, come ad esempio Firebug. Considerando come esempio il dominio aziendeitalia.com, proviamo a raggiungere il sito usando i due indirizzi (con www e senza www) e confrontare i risultati. Nel caso dell'indirizzo con il prefisso www abbiamo

Esempio di HTTP 200

Esempio di HTTP 200

mentre senza il prefisso www risulta

Esempio di redirect 301

Esempio di redirect 301

dal confronto emerge che il dominio canonico (o authoritative domain) per il sito di AziendeItalia è quello con il prefisso www: se digitiamo l'indirizzo senza tale prefisso riceviamo la risposta “HTTP 301 Moved Permanently”, che serve proprio a risolvere il problema in oggetto: la risposta HTTP 301 significa che l'indirizzo richiesto è stato spostato altrove, specificando dove ridirigere le richiesta. Subito dopo questa risposta, infatti, abbiamo (vedi figura qui sopra) una nuova richiesta HTTP GET verso il dominio canonico (www.aziendeitalia.com), con esito HTTP 200, che significa "tutto ok".

Il caso appena visto è un buon esempio di utilizzo del redirect HTTP 301: grazie al re-indirizzamento, qualsiasi sia l'indirizzo, ogni volta che raggiungiamo il sito di AziendeItalia siamo indirizzati (alla fine delle transazione HTTP) verso il dominio corretto. Ciò accade, tra l'altro, anche quando il sito viene analizzato dai motori di ricerca, che grazie a questo stratagemma indicizzano solamente il dominio canonico.

Per realizzare il redirect basta aggiungere alcune righe al file .htaccess presente nella root del sito. Se non abbiamo mai usato un file .htaccess, possiamo crearne uno nuovo, che conterrà solamente le righe qui sotto. Se non sappiamo cos'è un file .htaccess, e vogliamo saperne di più, possiamo leggere l'articolo introduttivo all'argomento.

Per realizzare il redirect di un ipotetico indirizzo www.prova.org, verso l'indirizzo prova.org, le righe da inserire nel file .htaccess sono

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.prova.org [NC]
RewriteRule ^(.*)$ http://prova.org/$1 [L,R=301]

Ovviamente, per ottenere lo stesso risultato su un altro sito, occorre sostituire le stringhe www.prova.org e prova.org con quelle del dominio in questione.

Esistono in realtà modi diversi di realizzare il redirect, usando sempre il modulo rewrite di Apache: questa libertà è dovuto alla flessibilità delle regole di rewrite, che possono essere scritte in maniera differente pur realizzando lo stesso risultato. Poiché il funzionamento di un file .htaccess dipende dalla politica del provider, il fatto di poter scrivere le regole del redirect in modi diversi dovrebbe aiutarci a trovare la “giusta sintassi” per il “giusto provider”. Se l'esempio qui sopra non dovesse funzionare, non scoraggiamoci e cerchiamo altri esempi di “redirect HTTP 301”: l'argomento è abbastanza popolare e la ricerca sul web offre numerosi esempi di sintassi alternativa.