Avete appena ricreato alcune pagine del vostro sito. Le vecchie hanno un buon posizionamento sui motori di ricerca e non volete perderlo. Come potete fare per inoltrare il traffico delle vecchie pagine alle nuove senza perdere il vostro posizionamento ? Potete farlo con il Redirect 301.
Che cosa è un redirect 301 ?
Il redirect 301 è il miglior metodo che abbiamo per mantenere il ranking sui motori quando reindirizziamo una pagina del nostro sito.
Il codice “301″ viene infatti interpretato come “moved permanently”. Dopo il codice infatti va poi specificata la vecchia pagina seguita da uno spazio e poi la nuovo pagina.
Per implementarlo basta aggiungere questo codice all’interno del file .htaccess (oppure direttamente nel virtualhost)
Cosa è il file .htaccess ?
Quando un visitatore/spider richiede una pagina web, il web server controlla la presenza del file .htaccess.
Il file .htaccess contiene istruzioni specifiche per alcuni tipi di richieste, incluse sicurezza, redirect e gestione errori.
Come implementare un redirect 301
- Per creare un file .htaccess aprite un qualsiasi editor di testo, create un nuovo file e salvatelo come .htaccess (senza estensioni). Nel caso di windows potreste avere problemi a salvare il file iniziando con il punto (.) quindi in questo caso chiamatelo htaccess.txt e poi una volta inviato via FTP sul server rinominatelo.
- Se avete già un file .htaccess sul vostro server, scaricatelo ed editatelo.
- Inserite il seguente codice nel vostro file .htaccess:
redirect 301 /vecchia/vecchia.html http://www.tuodominio.com/nuovapagina.html - Se il vostro file .htaccess contiene già delle righe di codice saltate una linea e scrivete l’istruzione lì senza cancellare quelle già presenti.
- Salvate il file .htaccess
- Inviate il file nella cartella root del vostro server.
- Testate il tutto scrivendo nel browser la vecchia pagina. Dovreste essere immediatamente inoltrati alla nuova.
Note: E’ importantissimo non aggiungere “http://www” alla prima parte dell’istruzione, ma mettere solamente il percorso a partire dal livello più alto del vostro sito.
Assicuratevi inoltre che ci sia lo spazioe tra questi due elementi:
redirect 301 (l’istruzione che indica che la pagina è spostata per sempre)
/vecchia/vecchia.html (il percorso e nome del file da spostare)
http://www.tuodominio.com/nuovapagina.html (il nuovo percorso e nome del file)
Quando gli spider dei motori di ricerca passeranno in esame il tuo sito seguiranno le regole che hai inserito nel file .htaccess.
In realtà gli spider non leggono il file .htaccess, ma riconoscono la risposta dal server come valida.
Durante il successivo aggiornamento dei motori il vecchio file verrà eliminato e rimpiazzato con il nuovo. A volte può capitare di vedere alternanze tra i file e alcune fluttuazioni che possono durare dalle 6 alle 8 settimane in riferimento alle linee guida di Google.
Altri metodi per implementare il redirect 301
- Per reindirizzare tutti i file di un tuo dominio puoi usare queste regole nel tuo file
.htaccess se sei su server linux/unix:redirectMatch 301 ^(.*)$ http://www.dominio.comredirectMatch permanent ^(.*)$ http://www.dominio.comPuoi anche usare una regola delle seguenti nel .htaccess file:
redirect 301 /index.html http://www.dominio.com/index.htmlredirect permanent /index.html http://www.dominio.com/index.htmlredirectpermanent /index.html http://www.dominio.com/index.htmlQuesto farà il redirect della pagina “index.html” verso un altro dominio usando un
redirect 301-Moved permanently. - Se hai bisogno di fare redirect da http://miosito.com a
http://www.miosito.com e hai il mod_rewrite abilitato sul tuo server puoi inserire le seguenti regole nel tuo file .htaccess:Options +FollowSymLinksRewriteEngine onRewriteCond %{HTTP_HOST} ^miosito.comRewriteRule ^(.*)$ http://www.miosito.com/$1 [R=permanent,L]oppure questo:
Options +FollowSymLinksRewriteEngine OnRewriteCond %{HTTP_HOST} ^miosito.com$ [NC]RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L] - Se vuoi reindirizzare le tue pagine .html verso pagine .php e hai il mod_rewrite abilitato sul tuo server puoi inserire queste regole nel tuo file .htaccess:
RewriteEngine onRewriteBase /RewriteRule (.*).html$ /$1.php - Se vuoi reindirizzare le tue pagine .html o .htm verso delle pagine .shtml perché usi Server Side Includes (SSI) aggiungi queste regole al tuo .htaccess:
AddType text/html .shtmlAddHandler server-parsed .shtml .html .htmOptions Indexes FollowSymLinks IncludesDirectoryIndex index.shtml index.html

Ok, informazione interesante e completa, ci stò provando per tutto il sito su un nuovo dominio … ha funzionato per un giorno e adesso non mi reindirizza. Proverò con una delle altre stringhe e vi tengo aggiornati su quella che funziona meglio
Come ha funzionato ed ora non funziona più ?
Questo è un po’ strano.
Ti ringrazio tantissimo, il tuo how to mi ha aiutato a risolvere un bel problema.
Grazie mille!
Sono davvero felice !!!
Ma l’immagine del header del tuo blog, non sarebbe stato più bello
{
return ($nome==’andrea’ && $cognome==’pernici’);
}
AHAHAH
Ciao.
Ciao Andrea
Puoi darmi assistenza per fare un redirect 301?
Puoi contattarmi tramite mail?
Grazie
non ho capito cosa scrivere sul file .htacces… almeno mi sembra di aver capito che se il voglio reindirizzare un pagina es:
redirect 301 /http://mionome.it/gallina.html poi metto lo spazio e poi nuova pagina http://www.mionome.it/galline_fritte.html
giusto???
scusate per le galline ma nn mi veniva nulla in mente:-)
Puoi usare questo:
redirect 301 /gallina.html http://www.mionome.it/galline_fritte.html
perfetto grazie mille, oggi provo a spostare tutto perche e da un quasi un mese e ancora ci sono le pagine cecchie in giro..
grazie a presto
ciao ho rifatto tutti le redirectori ma adesso del sito non si vede piu nulla…neanche la home page..dice errore 500 (se puo interessare uso mozilla) ciao e grazie
Molto probabilmente non hai la possibilità di usare il .htaccess nel tuo host.
grazie per l’informazione!
Ciao Andrea, il Global translator ha colpito anche me.
Traffico aumentato anche dall’estero, ma un sacco di errori 404.
Volevo utilizzare la tua stessa tecnica però il modo in cui il traduttore crea le mie pagine è diverso da come lo hai descritto tu e non so come agire.
Nel mio caso i 404 sono relativi a pagine così:
http://www.nomesito.it/2009/10/29/nome-articolo/2/&rurl=translate.google.com&lang=it&usg=ALkJrhgxr8SDra1HOh9xPgJRPSJyx30jFA
Cosa ci scrivo nell’htacces?
A cosa fai riferimento quando parli del Global Traslator che ha colpito anche te ?
Inoltre cosa vuoi dire quando dici che il traslator non crea la pagina come l’ho descritto io ?
Scusa il ritardo nella risposta
Ciao Andrea, preso dalla foga non sono stato molto chiaro. Avevo un plugin installato per tradurre il blog in altre lingue; mi ha causato un sacco di errori 404 e volevo risolvere col 301. Solo che ho centinaia di pagine non trovate con url simili a quello indicato. Ti sarei grato se mi potessi dare qualche indicazione.
Così non posso aiutarti purtroppo…dovresti mostrarmi il tuo sito e darmi qualche informazione in più.
Grazie della disponibilità Andrea, l’url del blog è faresoldierisparmiare.it.
Se mi dici quale tipo di informazioni ti servono te le posto immediatamente.
Ho trovato in rete queste due soluzioni ma non so quale sia più indicata o corretta.
Ho preso spunto da un post su google webmaster: http://tinyurl.com/37s22sq
Soluzioni trovate:
RedirectMatch 301 ^/(en|fr|es|ru|de)/(.*)$
http://www.nomesito.it/$2
RewriteCond %{HTTP_HOST} ^.*$
RedirectMatch 301 ^/(en|fr|es|ru|de)/(.*)$
http://www.nomesito.it/$2
Ora non usi più quel plugin.
Hai provato ad usare il plugin segnalato nel forum ?
Purtroppo non conosco il plugin in questione quindi non so dirti .
Queste direttive htaccess le hai provate ?
Usavo il plugin indicato nel forum. L’ho disinstallato
ma ho lasciato in cache le pagine tradotte. Poi ne
ho bloccata l’indicizzazione tramite robots ma le pagine
erano già in errore 404. Grazie comunque della
tua disponibilità. Solo un’ultima cosa, visto che sto per
provare una delle due direttive. Cosa cambia nei 2 esempi
tra RedirectMatch …. e RewriteCond %{HTTP_HOST} ?
Grazie della disponibilità.
IN uno fai operazioni singole nell’altro fai un match più ampio.
Salve a tutti, come faccio a fare un redirect di:
www. miosito.it/ pagina
su
www. miosito.it/ pagina.html
google le vede come due pagine distinte ha dato perfino due punteggi differenti a entrambe e mi da contenuto duplicato please aiutatemi!
Filippo è scritto sopra nella guida…cmq:
redirect 301 /pagina http://www.miosito.it/pagina.html
Oppure usa il tag canonical nell’header.
il problema è che non riesco ad entrare nell’header di /pagina
(con file zilla non la trovo..esce solo pagina.html)
ma solo nell’header di /pagina.html poi dovrei mettere
è sufficiente mettere il tag canonical solo nella pagina.html
(che è quella che voglio venga indicizzata)??
il redirect 301 come mi hai mandato non funziona
Scusa filippo ma dove lo metti il codice per il redirect ?
Cosa vuol dire che non riesci ad entrare nell’header della pagina con filezilla ?
Credo che tu stia proprio sbagliando qualcosa.
Ciao Andrea ti chiedo gentilmente, ho fatto un restyling ad un sito in wordpress (lnx.marinaresidence.it) il vecchio sito http://www.marinaresidence.it è su server aruba (windows) che mi viena l’accesso al file .htaccess e mi vieta cmq di crearlo. Come posso fare il redirect 301 di tutto il sito vecchio sul nuovo??
Basta inserire il redirect solo nella home del vecchio sito come suggerisce aruba?
Grazie
Ciao Emiliano, se il vecchio sito è in wordpress allora puoi semplicemente includere il redirect nell’header.php del tuo tema.
In questo modo avrai redirect per ogni pagina.
Purtroppo no…
è su server windows e non sono “ferrato” ma penso sia in html
ti posto uno stralgio di index.. come posso fare il 301 su wordpress?
MARINA RESIDENCE HOTEL VILLAGGIO – Castro, Lecce, Salento, Puglia.
<!–
function openPictureWindow_Fever(imageName,imageWidth,imageHeight,alt,posLeft,posTop) {
newWindow = window.open("","newWindow","width="+imageWidth+",height="+imageHeight+",left="+posLeft+",top="+posTop);
newWindow.document.open();
newWindow.document.write('’+alt+”);
newWindow.document.write(”);
newWindow.document.write(”);
newWindow.document.close();
newWindow.focus();
}
//–>
Grz
Qui trovi tutte le modalità per fare il 301 anche via HTML:
http://www.giorgiotave.it/wikigt/os/Redirect_301#HTML
Grazie. Scusa se sono “duro” ma devo inserirlo solo nel file index o in tutte le pagine del sito???
Ovviamente in tutte le pagine…se è in html non c’è altra via.
Grazie.. e visto che sono duro ti chiedo.. le pagine devo svuotarle per nonc reare doppi contenuti o inserirsco solo i redirect tra gli head??
E’ indifferente puoi fare come vuoi.
GRAZIE DAVVERO E SORRY
Anche a me inizialmente ha dato errore 500, poi ha funzionato. Ho usato il redirect da .htm a .php:
RewriteEngine onRewriteBase /RewriteRule (.*).html$ /$1.php
il fatto è che mancano degli spazi, ho risolto mandando a capo:
RewriteEngine on
RewriteBase /
RewriteRule (.*).html$ /$1.php
(poi io ho usato .htm invece di .html dove compare perché avevo quell’estensione lì, ma questo è chiaro.)
[...] il resto dell’articolo su questo interessante blog: anche se è ormai opinione diffusa che fra i fattori che danno valore ad una pagina web in basi a [...]
Salve, io vorrei inserire un redirect 301 sul mio sito poichè ne ho creato uno nuovo con lo stesso nome ma .com, per non perdere le indicizzazioni del vecchio. Il mio problema è che sul vecchio c’è prcaricato un programma e-commerce e non riesco a capire dove inserire la stringa e in che linguaggio. Sapreste darmi una mano? Purtroppo chi l’ha creato è irreperebile, ma io ho l’accesso anche allo spazio web sul server, mi compaiono un sacco di cartelle e nonstante le indicazioni non so dove inserire il redirect.
Grazie a chi mi può aiutare.
vanno inseriti nel file .htaccess che è un file nascosto quindi se non lo vedi devi fare un bel ls -a oppure impostare il client ftp in modo che listi i file nascosti.
Grazie, vedo cosa riesco a fare.
Grazie mille! Molto utile!
Devo fare un redirect da un sito ad un altro con domini differenti.
Ho provato a fare questo
redirect 301 /index.html ht tp://www. dominio.com/index.html
ma mi fa il redirect solo della home page e non delle altre pagine contenute nel sito…
ultilizzando questo invece
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^miosito.com$ [NC] (qui quale sito devo scrivere, il vecchio o quello dove va indirizzato il redirect?)
RewriteRule ^(.*)$ htt p://www .miosito.com/$1 [R=301,L] ((qui quale sito devo scrivere, il vecchio o quello dove va indirizzato il redirect?)
mi da errore 500…
help!!
redirectMatch 301 ^(.*)$ ht tp://www.nuovosito.com
Sul server di register non funziona il redirect con htaccess e neppure
utilizzando il classico:
come fare per reindirizzare le pagine vecchie alle nuove create con joomla?
Grazie Alfredo
Cambia Hosting
E’ la soluzione migliore.
Puoi fare redirect tramite metatag refresh oppure tramite header php, ma devi crearti tutte le pagine in modo statico.
Ciao Andrea, si forse cambiare hosting sarebbe la cosa migliore, al momento però sono nella cac…, il metatag refresh non funziona (vedi la sorgente di http://www.occhioalboma.it/riserva%20zingaro.htm ) che fare?
Grazie Alfredo
Ciao Alfredo come lo hai messo non può funzionare. I meta non vanno dentro alla definizione dello style css ma fuori.
Ciao andrea, complimenti per la guida.
A me ha restituito un errore nel 500. Ho un sito su joomla su hosting aruba e volevo fare un redirect 301 da http://miosito.com a http://www.miosito.com. Ho inserito il seguente codice:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^miosito.com
RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=permanent,L]
Logicamente al posto di “miosito.com” ho inserito il mio indirizzo dove posso aver sbagliato?
Controlla prima che su aruba tu possa utilizzare mod_rewrite.
si lo uso già da tempo per le url..
Controlla bene il codice del post con quello che mi hai messo qui nel commento.
Verifica anche che non conflitti con le regole htaccess di joomla.
Ottimo, ho provato a usare l’altra versione del codice k avevi inserito, cioè questo :
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^miosito.com$ [NC]
RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L]
e il sito ora funziona, grazie per l’aiuto.
Ciao, ho rifatto un sito prima in flash, utilizzando wordpress. Sui motori mi compaiono ancora tutt le pagine del vecchio sito anche se non esistono più. Mi indicheresti il modo migliore per effettuare il redirect??
Segui le istruzioni del post e redirigi ogni pagine del vecchio sulla rispettiva del nuovo.
Ciao andrea. Gentilmente se mi puoi aiutare e chiarire: ho un sito vecchio con ovviamente all’interno articoli pagine ecc… con estensione finale .shtml quello che dovrei fare è reindirizzare tutti gli articoli al nuovo sito. Domanda: se ho un articolo che parla di A sul sito vecchio facendo un redirect 301 l’articolo vecchio punta automaticamente all’articolo sul nuovo sito che parla sempre di A ?? oppure si deve fare un redirect singolo per ogni articolo del vecchio al nuovo ? spero di essermi spiegato
grazie
Ciao Luca. La risposta è dipende.
Se le url del sito vecchio sono uguali alle nuove puoi usare una singola regola.
Se le url del sito vecchio e quelle di quello nuovo sono automatizzabili tramite regexp anche.
Altrimenti devi farne una ad una.
Ti ringrazio per la risposta. Preciso che il sito nuovo
utilizza wp mentre quello vecchio no. Come posso capire se
le url sono automatizzabili ? ciao
Se c’è una regola fissa che ti fa identificare la composizione delle URL.
Ciao andrea sono qui di nuovo per un dubbio (grazie per la risposta precedente. Cambiando la struttura dei permalink da postaname a post-id-postaname se non sbaglio sia le pagine che le category restano invariate quindi si dovrà eseguire i redirect solo per i post è corretto? ciao grazie
Sì.
Grazie, molto utile!