Nei giorni scorsi ho avuto la necessità di modificare tutti gli url di un sito, e ho pensato bene di fare una redirect tramite il comando response.redirect. Osservando i motori di ricerca mi sono accorto che continuavano ad apparire le vecchie url.
Ciò accade perchè per fare un redirect permanente è errato utilizzare il codice 302, che poi è quello restituito dal comodo response.redirect di asp, ma occorre un 301.
Da
Wikipedia "Elenco dei codici di stato HTTP"
- 301: Moved Permanently
- This and all future requests should be directed to another URI.
- 302: Found
- Questo è il codice più usato ma anche un classico esempio di non aderenza agli standard nella pratica quotidiana. Infatti, le specifiche di HTTP/1.0 (RFC 1945) richiederebbero che il client esegua redirezioni temporanee (la descrizione originale era "Moved Temporarily"), ma i più diffusi browser l'hanno implementata come 303 descritta di seguito. Perciò, HTTP/1.1 ha aggiunto i codici di stato 303 e 307 per distinguere tra i due comportamenti. Comunque, la maggior parte delle applicazioni e dei framework web ancora usano il codice di stato 302 come se fosse il 303.
La header
301 è quella corretta per indicare ai motori di ricerca che il sito è stato spostato da un'altra parte in modo
permanente.
Il codice per implementarla in linguaggio asp è il seguente:
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.sito.ext/nuovapagina.asp"
Response.End
%>
Per gli altri linguaggi vedere: SEOTag "Status 301 Moved Permanently"
Status 301 e SEO
Il codice http 301 viene considerato correttamente dai motori di ricerca, ciò significa che al loro interno passeranno i loro rating alla nuova pagina, comprese eventuali penalizzazioni. Per cui credo proprio sia inutile fare il redirect su una nuova pagina per resettare la memoria di google della vecchia pagina penalizzata, cosa che io sto comunque provando a fare per resuscitare un sito, perchè... non si sa mai :)
Fonte:
Mor Designs "301 Moved Permanently: How to Use It Correctly for SEO"