34

Come fare Redirect 301 di una pagina web

Scritto il in Seo, WebServer e taggato , , , da Andrea Pernici

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

  1. 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.
  2. Se avete già un file .htaccess sul vostro server, scaricatelo ed editatelo.
  3. Inserite il seguente codice nel vostro file .htaccess:redirect 301 /vecchia/vecchia.html http://www.tuodominio.com/nuovapagina.html
  4. Se il vostro file .htaccess contiene già delle righe di codice saltate una linea e scrivete l’istruzione lì senza cancellare quelle già presenti.
  5. Salvate il file .htaccess
  6. Inviate il file nella cartella root del vostro server.
  7. 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

  1. 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.com

    redirectMatch permanent ^(.*)$ http://www.dominio.com

    Puoi anche usare una regola delle seguenti nel .htaccess file:

    redirect 301 /index.html http://www.dominio.com/index.html

    redirect permanent /index.html http://www.dominio.com/index.html

    redirectpermanent /index.html http://www.dominio.com/index.html

    Questo farà il redirect della pagina “index.html” verso un altro dominio usando un
    redirect 301-Moved permanently.

  2. 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 +FollowSymLinks

    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^miosito.com

    RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=permanent,L]

    oppure questo:

    Options +FollowSymLinks

    RewriteEngine On

    RewriteCond %{HTTP_HOST} ^miosito.com$ [NC]

    RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L]

  3. 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
  4. 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 Includes

    DirectoryIndex index.shtml index.html

34 Risposte so far.

  1. Alex scrive:

    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

  2. Come ha funzionato ed ora non funziona più ?
    Questo è un po’ strano.

  3. andrea scrive:

    Ti ringrazio tantissimo, il tuo how to mi ha aiutato a risolvere un bel problema.
    Grazie mille!

  4. Sono davvero felice !!!

  5. Stefano scrive:

    Ma l’immagine del header del tuo blog, non sarebbe stato più bello
    {
    return ($nome==’andrea’ && $cognome==’pernici’);
    }
    AHAHAH
    Ciao.

  6. Andrea scrive:

    Ciao Andrea
    Puoi darmi assistenza per fare un redirect 301?
    Puoi contattarmi tramite mail?
    Grazie

  7. luca scrive:

    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:-)

  8. luca scrive:

    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

  9. luca scrive:

    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

  10. gianluca scrive:

    grazie per l’informazione!

  11. Claudio scrive:

    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 :)

  12. Claudio scrive:

    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.

  13. Così non posso aiutarti purtroppo…dovresti mostrarmi il tuo sito e darmi qualche informazione in più.

    • Claudio scrive:

      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

      • Claudio scrive:

        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 ?

          • Claudio scrive:

            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.

  14. Filippo scrive:

    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.

      • Filippo scrive:

        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.

  15. emiliano scrive:

    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.

  16. emiliano scrive:

    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

  17. emiliano scrive:

    Grazie. Scusa se sono “duro” ma devo inserirlo solo nel file index o in tutte le pagine del sito???

  18. emiliano scrive:

    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??

  19. emiliano scrive:

    GRAZIE DAVVERO E SORRY

Leave a Reply