In questa pagina descriveremo in modo semplice alcune regole base da seguire quando decidete di cambiare la struttura delle URL del vostro sito per evitare di perdere il valore che il motore di ricerca aveva attribuito alle vecchie. Per essere precisi con il 301 si preserva quasi tutta la forza delle vecchie URL perché come detto dagli ingegneri di Google un minimo di Juice può andar perduto, ma una minima parte e in ogni caso il seguente è il metodo migliore in assoluto e quello consigliato.
Un possibile scenario è il seguente.
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 sempre che da direttive di configurazione di Apache vi venga dato il permesso di utilizzo del file per regolarne il comportamento.
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 Linux potete ad esempio fare da linea di comandoVim .htaccess
e poi una volta editato:wq
.
Nel caso di windows potreste avere problemi a salvare il file iniziando con il punto (.) quindi in questo caso chiamatelohtaccess.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 spazio 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 verranno reindirizzati alle nuove URL come hai stabilito con le regole inserite nel file .htaccess.
In realtà gli spider non leggono il file .htaccess, ma riconoscono la risposta dal server come valida, esattamente allo stesso modo del Browser e quindi risulta completamente trasparente sia agli occhi dell’utente che del motore.
Durante il successivo aggiornamento dei motori il vecchio file verrà eliminato e rimpiazzato con il nuovo. Il tempo di digestione del passaggio dal file vecchi al nuovo all’interno dell’indice di Google può variare. In realtà negli indici di Google la risorsa rimarrà per sempre da qualche parte ed è bene mantenere i redirect per sempre soprattutto in quei casi dove le vecchie URL sono linkate da siti esterni.
In questi casi è necessario mantenere i redirect per un tempo indeterminato.
Se vi accorgete che il vostro file .htaccess diventa troppo corposo e dunque potrebbe generare problemi di stabilità e di carico è buona pratica spostare le istruzioni di redirect all’interno del file VirtualHost (qualora vi fosse possibile farlo).
Per poter modificare il file di VirtualHost solitamente dovete avere accessi alla configurazione di Apache e quindi difficilmente vi sarà possibile se avete acquistato un hosting.
Il vantaggio di tenere tali direttive nel VirtualHost è molteplice perché limita anche la possibilità di cancellazione involontaria delle istruzioni che i Cms o alcuni plugin potrebbero fare.
Altri metodi per implementare il redirect 301
Reindirizzare tutti i file
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.
Da sito vecchio a nuovo
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]
Da pagine .HTML a .PHP
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 on RewriteBase / RewriteRule (.*).html$ /$1.php
Da .HTML a .SHTML con SSI
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 .shtml AddHandler server-parsed .shtml .html .htm Options Indexes FollowSymLinks Includes DirectoryIndex index.shtml index.html
Redirect con querystring
Ci sono dei casi in cui con le regole sopra non riuscirete a fare tutto e in particolare nei casi in cui volete redirezionare pagine che fanno uso di parametri come ad esempio http://www.miosito.com/paginetta.php?p=1
.
In questa situazione potete ad esempio usare un codice come il seguente da personalizzare ovviamente caso per caso in base alle vostre specifiche esigenze.
RewriteEngine On RewriteCond %{REQUEST_URI} ^/paginetta\.php$ RewriteCond %{QUERY_STRING} ^p=([0-9]*)$ RewriteRule ^(.*)$ http://www.miosito.com/paginetta/%1 [R=301,L]
Per chi volesse approfondire l’argomento Mod Rewrite di Apache segnalo questa completa guida di Massimo Della Rovere.
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, avrei bisogno di fare questo redirect 301:
redirect 301 dir/pagina http://www.miosito.it/pagina.html
però su parecchie migliaia di link, come posso fare?
in sostanza vorrei potergli dire se sei in un file senza estetione dentro la cartella dir allora punta ad una sola pagina (index.php)
Riesci a darmi una mano? sono su php e posso usare htaccess tranquillamente.
Ciao e complimenti sono un tuo vecchio fan da sempre 🙂
Ciao Trau.
Quindi devi passare da direcotory/pagina a pagina.html?
Se si basta che usi regular expression quindi ad esempio mappi /dir/(.*) in http://www.miosito.it/$1.html
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.)
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!
Ciao Andrea,
complimenti per l’articolo!
Ho comunque ancora dubbi, su un caso (blog ASP) di cui non ho letto molto. Sto trasferendo il mio blog/windows (dBlog CMS di Marlenek, su ASP) su WP/linux
Il mio problema è che nel vecchio blog non c’è una pagina iniziale! Cioè, nei tuoi esempi qui sopra, come vecchio indirizzo c’è una pagina html o php etc.: tuo esempio -> redirect 301 /vecchia/vecchia.html http://www.tuodominio.com/nuovapagina.html
Nel mio caso invece dentro la cartella del blog non c’è nessuna pagina iniziale, per leggere quel blog basta citare l’indirizzo: http://www.travelbaila.it/dblog/
DOMANDA 1
Se su .htaccess scrivo questa riga qui sotto, tutto il traffico che va al vecchio blog verrà trasferito alla pagina iniziale del nuovo?
Redirect permanent /travelbaila.it/dblog/ http://www.travelbaila.it/
DOMANDA 2
Se volessi fare le cose meglio, e segnalare lo spostamento di ogni singolo vecchio post (sono 160), posso creare una riga di redirect per ogni post, come in questo esempio?
Redirect permanent /travelbaila.it/dblog/articolo.asp?articolo=63 http://www.travelbaila.it/manaus-e-il-sogno-perduto-30/
Se hai voglia e tempo di risponderti te ne sarò infinitamente grato! Buona Pasqua
🙂
Dubbio: se volessi annullare un redirect 301 fatto lato htaccess (attivo da diversi mesi), qual é la soluzione migliore?
Grazie e complimenti per il blog!
Ciao Gio,
se vuoi toglierlo dipende dai motivi per cui lo fai.
Per toglierlo basta che rimuovi la regola dal file .htaccess.
Forse non ho capito la domanda.
Fammi sapere
Andrea
Il mio dubbio riguarda più che altro il “ritorno” della vecchia pagina o sito rediretto. Ad esempio
Url A > redirect 301 > Url B
Una volta eliminato il 301 dal file htaccess, l’url A recupererà il vecchio PR o c’é qualche rischio che lo perda?
E l’Url B, essendo indicizzato potrei trattarlo con un 404 o magari con un canonical in caso di duplicato?
Ciao Andrea. Non sono molto pratica e volevo chiederti un consiglio. Ho creato delle pagine duplicate con estensione .shtml per includere il menu. Ora è meglio che utilizzi il redirect 301 o il codice che hai inicato al n. 4? per mantenere il posizionament nei motori di ricerca c’è differenza tra le due soluzioni?
Grazie e complimenti
Ciao bibi l’estensione non è un problema.
nel senso che le due soluzioni vanno bene entrambe?
Grazie ancora
Sì prova la prima e se riscontri problemi vai con l’ultima.
vorrei spostare alcuni post del mio blog (su blogspot) di un argomento in uno ex novo; come faccio per non ottenere da google penalizzazioni sul sito da cui sposterò questi post e tenere nel nuovo le posizioni avute in precedenza? Grazie.
Non conosco bene blogspot ma credo che non sia possibile fare dei 301.
e che mi consigli di fare allora per spostarli nel nuovo blog per non perdere penalizzazioni nel precedente?
Non so cosa si può fare con blogger. Prova a cercare nella documentazione di blogger se è possibile fare redirect 301 su altro sito.
grazie, ma perderei posizionamenti? Subirei penalizzazioni da google?
Se non fai i 301 ovviamente sì…ma se li fai e il contenuto rimane a tema in teoria no.
scusami, come lo faccio? Sarebbe di spostare una decina di post da un blog all’altro. Il problema non è tanto quello nuovo che ripartirebbe daccapo, tanto quello vecchio che perderebbe dei post già indicizzati.
Non ci capiamo…Mi hai detto che il tuo blog è su blogspot e non credo che da blogspot tu possa fare un 301 e se si può fare io non lo so come perché non uso blogspot.
ok ok ti ringrazio 🙂 a presto.
Ciao Andrea,
io mi trovo in questa situazione: devo fare dei redirect da ASP a PHP. Infatti il vecchio sito aveva un CMS in ASP e ora è in WordPress.
Il problema è che voglio fare il redirect preciso di una decina di pagine e le altre mandarle tutte alla home (questo perchè sono migliaia di pagine e voglio reindirizzare solo le più visitate alle nuove con gli stessi contenuti).
Quindi ad esempio:
se voglio fare da /Page.aspx?PageId=1 verso /chi-siamo/
poi
/Page.aspx?PageId=23 verso /nome-azienda/programma/
e così per altre 10 pagine ad esempio… e per tutte le altre mandarle verso la nuova home. Come faccio? L’htaccess rispetta la priorità di elenco? (il server sarà apache)
Grazie mille
Ciao Marco, sì rispetta l’ordine.
Ciao Andrea,
ho inserito come risorsa utile un link verso questo tuo articolo nel mio eBook “Landig Page Perfetta”.
Trovi il link a pag. 31.
Spero che la cosa ti sia gradita. 🙂
L’eBook è gratuitamente scaricabile previo inserimento di email e nome dall’indirizzo in firma.
Saluti,
Massimo
Grazie della segnalazione e della citazione.
Ciao Andrea,
vorrei fare un redirect 301 di un sito web, su CMS joomla con hosting joomlahost, da http://miosito .com a http://www. miosito .com .
Vorrei sapere se è possibile fare un redirect 301 di tutte le pagine tramite file .htaccess tutte insieme.
Mi spiego meglio, ho usato il codice:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^miosito .com$ [NC]
RewriteRule ^(.*)$ http://www.miosito .com/$1 [R=301,L]
e tutto mi funziona perfettamente, se provo a collegarmi su
miosito .com mi reindirizza su www. miosito. com.
Il mio problema è che se provo a collegarmi per esempio su:
miosito .com/pagina1 mi reindirizza sempre a www . miosito. com
mentre io dovrei farlo reindirizzare così:
da miosito .com/pagina1 a www. miosito .com
E’ possibile tramite qualche istruzione nel file .htaccess, reindizzare tutte le pagine del dominio nella versione con il www in una sola volta ? Oppure devo farlo manualmente per ogni pagina del dominio?
Grazie per il tuo lavoro svolto.
Saluti Antonio
Ciao Antonio,
prova con il seguente
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Grazie a te
Andrea
L’ho appena provato ma mi dà sempre la stessa cosa..
Nel senso che mi rendirizza sempre alla home page del sito.
prova così….
RewriteCond %{HTTP_HOST} ^TUOSITO
RewriteRule (.*) http://www.TUOSITO/$1 [R=301,L]
Ciao Lorenzo,
ho provato anche questa soluzione ma comunque mi reindirizza lo stesso sul www
della home page del dominio.
Molto strano…
è la stringa che uso di solito e non da mai problemi…
Temo ci sia nel tuo htaccess qualche istruzione successiva che sovrascrive! Meglio se controlli…
Che hosting usi?
la stringa che ti ho passato la uso su Joomlahost…
anche il mio sito personale è lì e la usa e tutto va come dovrebbe!
Aspetta….
Ma hai installato qualche componente SEF, tipo 404SEF o altri???
In quel caso devi configurare direttamente i componenti, si occupano loro dei redirect!
oppure disinstallali tanto non servono a molto: se li togli ricorda di disattivare tutti i loro plugin e di fare un backup del sito prima… a volte se li disinstalli nn funziona più nulla
Prova anche ad attivare il debug di sistema dal pannello di configurazione per vedere che succede e a dare un’occhiata ai log del server
No, ancora non ho installato un componente sef. Ho provato la tua strinda su due domini entrambi su joomlahost ma ho lo stesso il problema. Se scrivo un link senza il www mi rimanda alla home page del dominio. Mi dai il nome del tuo dominio o è un problema?
clicca sul mio nome e ci vai!
ultima domanda… vediamo se è questo…
hai attivato da configurazione globale le url sef?
A te, effettivamente funziona, ma a me non ne vuol sapere. Non so più come muovermi.
Ho provato il tuo codice esattamente così ma mi reindirizza ugualmente alla home page.
RewriteCond %{HTTP_HOST} ^example.it
RewriteRule (.*) http://www.example.it/$1 [R=301,L]
Al posto di “example” c’è il nome del mio dominio. Altre istruzioni non ce sono è la prima che scrivo io. Le altre sono quelle che mette in automatico joomla.
Bello il post, molto esauriente…grazie.
Il mio sito sito nato per gioco, è diventato di circa 1.200 pagine e quindi sto dividendo tutto il materiale in sottocartelle seguendo il metodo descritto in questo articolo. Tutto funziona alla perfezione.
Domanda: Dopo quanto tempo posso cominciare ad eliminare il contenuto del file .htaccess?
Mai 🙂
Quindi mi pare di capire che alla fine avrò un file .htaccess con circa 1.200 righe e che l’unica soluzione per cercare di svuotarlo, dopo adeguato tempo, sarà di fare la rimozione delle vecchie pagine sugli strumenti per webmaster di Google.
Il mio consiglio è di tenerlo per sempre e se ti sarà possibile di metterlo nel file VirtualHost invece che nell’.htaccess.
Non rimuovere assolutamente le vecchie pagine perché potrebbero ricevere link dall’esterno quindi in pratica fintanto che non esisteranno più referenza alle vecchie dovrai tenere il 301.
Scusa ma si sono accavallati i post e quindi il mio secondo va annullato. Mentre scrivevo mi stavi rispondendo.
Non so cosa sia il VirtualHost ma vado a fare una ricerca per scoprirlo.
Avevo già intuito che prima di cancellare le vecchie pagine devo controllare che non ci siano richiami dall’esteno.
Ciao Andrea,
complimenti per l’articolo!
Però non son riuscito a far funzionare l’htaccess modificato e alla fine ho installato 2 plugin che mi fanno lo stesso lavoro, assai più facilmente ma non so se con la stessa velocità della modifica al solo htaccess.
Il problema è dato che il blog che ho trasferito su WP aveva querystring.
Avevo circa 180 post, per cui nel file htaccess ho inserito 180 righe ognuna simile a questa:
Redirect permanent /travelbaila.it/dblog/articolo.asp?articolo=63 http://www.travelbaila.it/manaus-e-il-sogno-perduto-30/
C’era qualche errore? Io non lo vedo… 🙁
Ora funziona tutto, ma forse ci perdo in velocità perchè ho 2 plugin in più (uno mi fa il redirect dei 180 post, e un altro mi fa il redirect di tutto il resto che finiva con 404, come ricerche per autore o data o categoria, immagini varie etc).
Grazie e… buon anno! 🙂
Ciao,
in caso di query string dovresti usare dei RewriteCond.
Ciao Andrea, complimenti per l’articolo. Ho un problema, attualmente ho le mie pagine riscritte in questo modo:
RewriteRule ^domande_frequenti/([^/]*)$ /page.php?id=5&lingua=$1 [L]
Funziona tutto ma dovrei fare un redirect 301 a questa pagina perché adesso si dovrà chiamare: “faq”. Come faccio a fare un redirect 301 di pagine già riscritte?
Grazie
Ciao Daniele,
se non ho capito male ti basta aggiungere la nuova regola che fa il redirect verso “faq”.
Sì, in pratica adesso “devo dire a Google” che la pagina (riscritta) “domande_frequenti” adesso si chiama “faq”. Come devo scrivere?
RewriteRule ^domande_frequenti/([^/]*)$ /page.php?id=5&lingua=$1 [L]
RewriteRule ^faq/([^/]*)$ /page.php?id=5&lingua=$1 [L]
e poi:
redirect 301 domande_frequenti/([^/]*) faq/([^/]*)
è giusta questa sintassi?
No è meglio che tu usi degli operaori logici oppure che fai la riscrittura da ^domande_frequenti..etcetc a faq…etcetc.
Insomma basta direttamente l’ultima con RedirectMatch.
Scusami per la mia ignoranza ma non sono espertissimo nell’utilizzo dell’.htaccess. Potresti farmi un esempio?
RedirectMatch 301 ^/domande_frequenti/(.*) http://www.andreapernici.com/faq/$1
Quindi nel mio caso il codice completo ed esatto sarebbe:
RewriteRule ^domande_frequenti/([^/]*)$ /page.php?id=5&lingua=$1 [L]
RedirectMatch 301 ^/domande_frequenti/([^/]*) /faq/$1
giusto?
Prova 😀
Devi solo aggiungere il nome dominio compreso di Http: nella seconda parte del RedirectMatch
Ora non conosco come sono le tue URL ma in linea di massima sì.
Ho trovato queste informaioni molto utili ma vorei capire come usarle.
Ho un vecchio sito che è agli indirizzi http://www.fattoriasantavittoria.net/en e http://www.fattoriasantavittoria.net/it vorrei spostare tutto sul nuovo sito che ho attivato http://www.fattoriasantavittoria.net/farmhouse
Se ho capito bene devo inserire nei file htaccess, senza cancellare le info gia presenti la seguente stringa
redirectMatch 301 ^(.*)$ http://www.fattoriasantavittoria.net/en
redirectMatch permanent ^(.*)$ http://www.fattoriasantavittoria.net/farmhouse
Giusto?
Grazie per la cortese attenzione e per l’aiuto.
Mauro
Ciao Mauro,
così come hai indicati le regole vanno in conflitto.
Dovresti semplicemente fare match delle sottocartelle precedenti e non di tutto.
Ciao Andrea,
se voglio fare un redirect di questo tipo mi dice per favore la stringa corretta da inserire ?.
Vecchia pagina: http://www.nomesito.com/nomecartella/nome_pagina.HTML
Nuova pagina: http://www.nomesito.com/nome_pagina
Praticamente ho tolto il “nome cartella” e il “.html” finale dalla vecchia url.
Il “nomesito.com” rimande uguale.
Grazie in anticipo per la tua risposta.
Ciao
Puoi fare esattamente come è scritto nel post.
redirect 301 /nomecartella/nome_pagina.HTML http://www.nomesito.com/nome_pagina
Cosa è che non ti è chiaro?
Fammi sapere.
Buongiorno Andrea,
ho trovato molto interessante ed utile il tuo articolo, la mia ignoranza però mi porta a non riuscire a sfruttarne i contenuti.
Ho un sito in prestashop, con URL friendly disattivato (non posso fare altrimenti), dove devo reindirizzare delle pagine di categoria ad una pagina CMS. Il redirect 301 sono stato in grado di farlo funzionare esclusivamente con l’URL friendly attivato, quindi chiedo a te una mano, trovandoti decisamente preparato in materia!
Se potessi fare almeno un esempio di come reindirizzare una pagina ad un’altra (nel mio caso), ti metto a disposizione qualsiasi informazione possa esserti maggiormente utile.
Grazie anticipatamente dell’attenzione e del tempo che dedicherai.
A.M.
Ciao A.M. perché non puoi attivare gli URL friendly?
Perchè ho un modulo che va in contrasto con l’URL friendly.
Non posso rinuciarvi e il creatore del modulo non è stato in grado (ne per il mio caso, ne per quello d’altri) di risolvere il problema.
E’ possibile un redirect con URL friendly disattivato?
Certo che è possibile basta che hai il mod_rewrite abilitato.
URL Friendly è roba del CMS suppongo mentre mod_rewrite è lato server.
Grazie, è stato prezioso.
salve andrea
Una cortesia, ho un ecommerce zencart devo spostarlo in un nuovo dominio fatto con prestashop ho usato questa regola:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^miosito.com$ [NC]
RewriteRule ^(.*)$ http://www.miosito.com/$1 [R=301,L]
Effettivamente funziona mi sposta tutto, il problema e’ che se per l’index mi reindirizza in modo corretto, per le pagine indicizzate del vecchio sito se vado a cliccarci mi rimanda sul nuovo sito su pagina non trovata….. come posso nell’htaccess aggiungere a mano anche i reindirizzamenti di ogni pagina che desidero sulla corretta pagina del nuovo dominio, per capirci:
http://www.olddominio.it/faq —-> http://www.nuovodominio.it/faq
Pensavo di aggiungere alla prima regola anche questa ma non funziona:
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
Mi puoi aiutare ?
grazie
Non credo di aver capito.
Se le pagine esistono sul nuovo e hanno lo stesso percorso allora non dovrebbero dare 404.
Se il percorso è diverso devi farle 1 ad 1 ma nel file htaccess del nuovo dominio.
si esatto esistano nel nuovo dominio ma hanno un “nome” diverso.
praticamente per capirci:
vecchio sito it/faq
nuovo sito it/content/8-faq
mi sembrava che si dovesse lavorare sull’htacces del vecchio sito e indicare li’ dove reindirizzare la pagina sul nuovo sito, non l’incontrario.
Mi potresti allora indicare l’istruzione per questo esempio(qui sopra delle faq) cosa scrivere nell’htaccess?
grazie
Fai redirect uno ad uno come scritto sopra usanto redirect 301 o rediretMatch 301, ma nell’htaccess del nuovo sito.
intendi cosi’: redirect 301 /it/faq http://www.ninfawholesale.com/it/content/8-faq
mi sembra abbia poco senso metterlo nel nuovo sito scusa, l’indirizzo viene cercato nel vecchio sito quindi dovrebbe essere li’ che deve essere data l’istruzione per cercare la pagina corretta nel nuovo sito no ?
Buongiorno Andrea,
scusa se ti disturbo, ma ho provato a fare quello che hai egregiamente spiegato nel tuo articolo (decisamente il migliore sul web!), ma non ha funzionato, quindi ci deve essere qualche passaggio di base che mi sono persa. Ti chiedo scusa in anticipo se non uso i termini tecnici corretti o se ti do info che sono irrilevanti 🙂
Ho un sito con pagine ASP su server Windows sul quale ho un ecommerce di diversi prodotti, che, ai tempi(una decina di anni fa), era stato creato appositamente per noi e per il quale ho accesso tramite FTP. Un paio di anni fa abbiamo creato un nuovo sito tramite un template di Register (per il quale ho poco o nessun accesso per la configurazione). Finora abbiamo tenuto entrambi i siti “aperti” per paura di perdere il buon piazzamento su google di quello vecchio, ma adesso sto cercando un modo di risolvere la situazione.
Ho quindi creato il file .htaccess come da tue istruzioni, così
redirect 301 /codiceprodotto http://www.shop.sitonuovo.com/codiceprodotto
e salvato il file nell’FTP del sito vecchio. Cosa ho sbagliato?
Grazie mille in anticipo!
Ciao Stefania,
il tuo host visto che è su Windows usa webserve Apache oppure IIS?
Dovrebbe essere IIS, è questo il problema?
Sì con IIS devi usare l’apposito sistema e non l’htaccess.
E qual è l’apposito sistema? Non trovo niente da nessuna parte 🙁
C’è un modulo di IIS per il mod rewrite http://www.iis.net/learn/extensions/url-rewrite-module
Oppure prova a vedere se questo ti funziona http://www.giorgiotave.it/wikigt/os/Redirect_301#ASP
Grazie mille!! Gli darò un’occhiata sperando di capirci qualcosa 😉
Ciao Andrea,
innanzitutto grazie per queste istruzioni che, specialmente per una sprovveduta come me, sono preziosissime.
La domanda che ti faccio è appunto un po’ sciocca 🙂 Perdonami
Ho registrato due nuovi domini, e vorrei che questi reindirizzassero al mio dominio originale, dove ho il sito. Anche in questo caso la procedura corretta è usare il 301 redirect? I due domini resteranno comunque “trovabili”?
Non so se mi sono confusa abbastanza… 😀
Ciao Tiziana,
sì devi fare il 301. Cosa intendi per trovabili? Dove?
Ciao 🙂
Non so neanche io come, ma miracolosoamente non mi sono “persa” per strada e seguendo le tue istruzioni sono riuscita a fare il redirect correttamente. Ora http://www.tizianapannuzio.eu e tizianapannunzio.com puntano sul mio dominio .it 🙂
Per trovabili intendevo se comunque Google trova anche loro, ma credo di no.
Scusa le domande sceme 😀
Ciao un consiglio per favore sto facendo un restyling di un sito da statico .htm a wordpress.
ora le vecchie pagine sono miosito.it/pagina.htm che diventeranno miosito.it/pagina
cosa mi consigli tenendo presente che saranno una trentina di pagine da reindirizzare????
Visto che sono solo 30 pagina e i nomi delle pagine saranno uguali fai un 301 da /vecchie.htm a /nuove
Ho un problema con delle redirect; ho creato il file .htaccess e metà funziona e metà no anche se è stato fatto allo stesso modo.
esempio link funzionante:
Redirect 301 /escursioni/sentieroroma/giorno3.htm http://www.waltellina.com/valtellina_valchiavenna/escursionismo_trekking/sentiero_roma/
link non funzionante
Redirect 301 /escursioni/tracciolino/index.htm http://www.waltellina.com/valtellina_valchiavenna/escursionismo_trekking/valchiavenna/tracciolino/index.html
quando punto il link non funzionante il browser mi redirige a questo indirizzo http://www.waltellina.com/valtellina_valchiavenna/escursionismo_trekking/valchiavenna/tracciolino/index.htmlindex.htm che ovviamente non esiste
Mi sapete dire qual’è il motivo?
Attendo fiducioso
Saluti e grazie
buongiorno Andrea molto ben spiegato ho fatto un prova ee tutto ok
io avrei un altra esigenza
il mio sito è in italiano ed inglese, le pagine originariamente sono sempre state in un unica cartella tutte insieme
ora ho spostato le pagine in due cartelle una per l’italiano e l’altra per l’inglese
c’è un modo per fare il redirect di tutte le pagine alle nuove cartelle che le contengono?
spero che mi puoi dare un consiglio, perchè le pagine sono tante!
grazie
Roberto
Dipende da come sono le URL vecchie e come saranno le nuove.
Buongiorno Andrea.
Da tempo stò cercando una soluzione ad un problema di reindirizzamento.
Avevo un sito e-commerce in Zencart e sono passato a prestashop. I due sistemi sono abbastanza diversi quindi ho optato, per non perdere l’indicizzazione a creare un REDIRECT “classico” a tempo 0 in questo modo: ho messo zencart in manutenzione ed ho modificato la index php della manutenzione inserendoci il redirect… Fin quì tutto bene, le vecchie pagine mi mandavano alla home del nuovo sito, ma dopo pochi giorni sulla pagina di google webmaster si sono accese le lucine rosse dicendomi che avevo 1400 pagine in errore 503. ovviamente a google ho tolto la vecchia sitemap di zencart ed ho inviato la nuova di prestashop. cosa mi conviene fare??
Grazie anticipatamente dell’interesse.
Ciao Andrea,
fai semplicemente dei 301 usano mod_rewrite visto che tanto stai facendo redirect tutto sulla home.
Grazie per la risposta. i nomi delle pagine non saranno uguali, ma questo penso cambi poco la situazione.
quindi ho preparato un 301 per ogni vecchia pagina.
ma le pagine vecchie le posso cancellare subito dall’ftp?
grazie
Ciao, ho il seguente problema:
Ho un sito di ecommerce fatto con zencart e su tale sito adesso vorrei aggiungere un totale di 5000 articoli provenienti da un distributore, tale distributore a sua volta vuole un link al mio sito di ogni articolo costruito con un redirect che finisca con un ID che mi forniscono loro.
Come posso fare?
Grazie per l’aiuto.
Ciao Salvatore non mi è chiaro quello che devi fare.
Puoi approfondire meglio?
Tutto risolto grazie
Salve, molte grazie per le preziose indicazioni.
Mi trovo però in difficoltà per impostare un redirect con la seguente pagina:
http://www.damaservizi.eu/it/home-italiano.feed?type=atom
Applicando il redirect consigliato (nella mia interpretazione…):
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/home-italiano\.feed$
RewriteCond %{QUERY_STRING} ^p=([0-9]*)$
RewriteRule ^(.*)$ http://www.miosito.com/%1 [R=301,L]
Senza successo!
Grazie per l’aiuto.
Ciao Andrea,
da quello che vedo ^p=([0-9]*) non potrà mai matchare con type=atom
Accidenti, sapendo 0 di PHP mi trovo in difficoltà…
non voglio rubarti tempo ma potresti darmi al volo qualche indicazione terra terra?
Grazie comunque!
Ciao Andrea, grazie mille per le tue preziose indicazioni! mi hanno permesso di capire e applicare tali tecniche.. ora però ho un problemino che non riesco a risolvere probabilmente per il fatto che sono un neofita di tali argomenti.
La questione è la seguente:
stò sistemando alcuni URL di un’ecommerce che linkano la stessa pagina. Ad esempio da GWT mi ritrovo che
http://www.miodominio.it/articoli-promozionali/19_Sciarpe-e-guanti.html
http://www.miodominio.it/articoli-promozionali/19_Sciarpe-foulards-guanti.html
puntano alla stessa pagina probabilmente perchè in origine il nome della categoria in questione era diverso ed è stato indicizzato con quel nome. Quello che ho pensato di fare è quindi il redirect 301 all’url attualemnte valido è il primo, quindi ../19_Sciarpe-e-guanti.html
Seguendo le tue indicazioni ho riportato la seguente riga sul mio htaccess:
Redirect 301 /articoli-promozionali/19_Sciarpe-foulards-guanti.html http://www.miodominio.it/articoli-promozionali/19_Sciarpe-e-guanti.html
tutto funge, ma per qualche motivo si porta dietro dei parametri sull’url. Questo può essere dato dal fatto che entrambi gli url sin dall’inizio utilizzano una RewriteRule al fine di comporre un url seo friendly?
La regola che va a storpiare il risultato secondo me portebbe essere la seguente:
RewriteRule ^articoli-promozionali/([^/]+).html catalogo.php?prc_id=$1&rewriting=yes [L]
concordi?
L’url risultante infatti risulta essere il seguente:
http://www.miodominio.it/articoli-promozionali/19_Sciarpe-e-guanti.html?prc_id=19_Sciarpe-foulards-guanti&rewriting=yes
Quindi il redirect viene eseguito correttamente ma ci aggiunge sempre questi parametri ?prc_id=19_Sciarpe-foulards-guanti&rewriting=yes ..
Non sapendo se le due cose possono coesistere chiedo consigli a tutti voi!
Grazie anticipatamente per l’attenzione!
Ciao Alberto,
che ordine hai dato alle regole?
Hai provato a mettere un $ a fine dell’URL da matchare?
Ciao Andrea,
non riesco a fare il redirect da miosito.it a http://www.miosito.it
nel file .htaccess trovo scritto questo :
# BEGIN WordPress
RewriteEngine on
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
provo ad implementare le righe di codice che tu suggerisci ma non si vede più il sito.
Come potrei risolvere??
grazie in anticipo
Ciao Filippo,
WordPress fa in automatico il redirect da non-WWW a WWW.
Non è necessario che tu faccia nulla.
Grazie Andrea, però il sito è indicizzato senza il www. e anche se ci scrivo nella barra degli indirizzi il dominio con il www, mi fa il redirect verso il dominio senza il www. Quindi è al contrario di come hai detto tu….
Allora devi cambiare le impostazioni Generali di WordPress
Ciao Andrea. Uso WordPress e tempo fa cambiai la struttura dei permalink da http://www.nomesito.com/%category%/%postname%.html a http://www.nomesito.com/%postname%/, ora google strumenti webmaster mi restituisce ogni giorno centinaia di link che sto riposizionando a mano con il redirect (sto già a quasi 300, il passaggio si fece quando il blog aveva circa 320 articoli). C’è un modo per “programmare” il redirect affinchè redirecti correttamente, e in automatico, tutti i link? Non voglio usare plugin perchè finora hanno fatto solo macelli (e credo anche di esser stato penalizzato). Grazie mille.
Sì puoi farlo usando una delle regole del post.
Scusa l’ignoranza Andrea… quale delle tante che hai scritto? 🙂 Grazie.
Devi usare rewrite cond e rewrite url, ma ovviamente usando le espressioni regolari che fanno al caso tuo.
questo?
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/paginetta\.php$
RewriteCond %{QUERY_STRING} ^p=([0-9]*)$
RewriteRule ^(.*)$ http://www.miosito.com/paginetta/%1 [R=301,L]
Ciao Andrea, sembra che ho trovato la soluzione per portare i link da http://www.nomesito.com/category/articolo.html a http://www.nomesito.com/articolo ho usato il seguente permalink:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} \.html$
RewriteRule ^(.*)\.html$ $1 [R=301,L]
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^category/(.+)$ http://moda.allweb360.com/$1 [R=301,L]
# END WordPress
Solo che c’è ancora un problemino: non mi reindirizza le sottocategory. Ti spiego, molti link sono sottocategorizzati (ad es lei/gallery) e in questi tipi di link non trasforma. Ci vorrebbe l’aggiunta di un’altra regoletta per le subcategory, sapresti aiutarmi? Grazie! P.s: non tenere conto del post precedente 😛
Come sono strutturate le tue sottocategorie?
Ciao Andrea,
sto cercando informazioni riguardo a questo caso:
ho un sito realizzato con joomla+virtuemart (per convenzione lo chiamo http://www.mysite.it), ho creato una cartella dove ho installato prestashop http://www.mysite.it/prestashop. Ora vorrei fare un redirect da mysite.it a mysite.it/prestashop
Come posso fare? Ho provato vari codici ma non sembrano funzionare come mai?
Ciao Laura che codici hai provato?
Per fare quello che chiedi ti basta usare una Regular Expression.
Ho usato :
RewriteEngine on
RewriteRule ^(.*)$ /prestashop [R=301,L]
ma anche il codice da te riportato in questo modo:
redirect 301
/index.php
http://www.mysite.it/prestashop
Ciao Andrea,
ho risolto il problema. Intanto avevo l’estensione del file htaccess da modificare (togliere txt, non me ne ero accorta, troppa stanchezza) e poi dovevo modificare alcune voci poichè mi trovo su aruba e quindi mi ritornava l’errore 500.
Ciao andrea ho trovato il tuo articolo molto chiaro, ma non so come applicarlo al mio caso.
Ho un sito in php e ho impostato tramite .htaccess degli url rewrite da url non seo friendly a url seo friendly. Si sono così generati dei contenuti duplicati. Devo applicare un redirect 301… ma in questo caso come funziona? Quale regola impostare??
Ciao Annalisa,
bisognerebbe capire cosa hai fatto esattamente per poterti aiutare.
Ciao Andrea, scusami se ti contatto di nuovo ma non ho capito come fare la regola rewrite nell’httaccess di http://www.nomesito.com/%category%/%postname%.html a http://www.nomesito.com/%postname%/. Mica saresti così gentile da scrivermi la regola? Te ne sarei molto grato.
Salve Andrea,
è possibile “mascherare” l’URL di un dominio che punta ad un altro?
Mi spiego meglio:
http://www.dominiovuoto.it deve puntare su http://www.dominioreale.it/dominiovuoto ma sulla barra indirizzi vorrei comunque http://www.dominiovuoto.it
Grazie in anticipo.
Nicola.
Ciao Nicola,
si puoi farlo utilizzando ServerAlias nella configurazione del tuo virtualhost.
Ciao grazie per i tuoi preziosi consigli, io ho usato
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://dominiosucuisitrovailsito.it/ [R=307,L]
Ma sul dominio su cui ho fatto il redirect, volevo fare delle prove per una nuova veste grafica, il problema è che il redirect funziona su tutte le sottocartelle, come faccio a fare un redirect solo sulla homepage?
Grazie
Ciao Francesca,
per farlo solo sulla homepage ti basta usare l’istruzione di base senza usare wildcard (.*).
redirect 301 / http://dominiosucuisitrovailsito.it/
Ho disinstallato dal mio sito ALL IN ONE SEO PACK, e da quel momento sono letteralmente scomparso dai motori di ricerca. Il sito è lo stesso, ho reinstallato ALL IN ONE SEO PACK, ma nulla. Sono scomparso. Premetto che il mio sito EDUCAZIONETECNICA.COM era oramai primo nelle ricerche Google da più di un anno con diverse chiavi di ricerca, ora qualunque cosa scriva non esisto su Google, eppure il sito è sempre li, non ho modificato nulla. Come posso ritornare a comparire nelle posizioni che avevo oramai raggiunto? Esiste un modo per ripristinare con i motori di ricerca la condizione precedente? Gli accessi sono crollati, perché non mi si trova più a meno di conoscere il nome del sito e digitarlo nell’URL. Grazie
Ciao Davide hai fatto un errore.
Nel tuo sito vedo che hai questo: < meta name="robots" content="noindex,nofollow" -/-> quindi molto probabilmente hai spuntati l’opzione nelle impostazioni generali relativa alla visibilità sui motori.
Onestamente non capisco però cosa questa domanda abbia a che fare con il topic del post.
In ogni caso spero di esserti stato utile.
Cercavo una soluzione al mio problema. Poi ho trovato te e ti ho scritto. Per risolvere il mio problema, quindi, cosa debbo fare? Non sono molto pratico, per cui ti chiedo un minimo di aiuto in più. Grazie ancora.
Dove trovo quelle spunte?
Grazie Davide
Devi andare in: Impostazioni > Lettura.
Fatto, ma la spunta su “Scoraggia i motori di ricerca a fare….” non c’è. Quindi, xchè sono scomparso dalla rete in modo così totale? Avevo installato sul sito ALL IN ONE SEO PACK più di un anno fa e l’ho rimosso una settima fa. Da quel momento…il vuoto. L’ho reinstallato ma nn è cambiato nulla. Ma è possibile una cosa del genere?
C’è un modo per ritornare visibile e soprattutto per riconquistare la posizione e la visibilità che avevo conquistato?
Grazie e scusa i ancora x il disturbo
Allora avrai inserito quei meta tramite un Plugin oppure nel tuo Tema.
Ciao Andrea, grazie per la risposta, ma il problema persiste. Se inserisco la riga di codice come mi hai suggerito tu (ovviamente col nome del sito corretto), non riesco lo stesso a raggiungere la sottocartella che mi serve (es. http://www.miosito.it/new/wp-admin) ma va sempre al sito attuale e quindi fa http://www.dominiosucuisitrovailsito.it/new/wp-admin dove ovviamente non c’è nulla.
Hai cancellato la regola che avevi prima?
Sì, ho cancellato tutto e inserito solo la tua riga.
Strano. Prova a specificare solo la pagina index. Quindi index.html o index.php in base alla tua configurazione.
Puoi dare di nuovo un’occhiata la sito? Ho eliminato tutti i plugin installati da poco. Può essere stato secondo te il plugin “Captcha” installato per evitare iscrizioni fasulle che oramai erano nell’ordine delle 30 al giorno? E torno a ripeterti, c’è un modo per ripristinare le vecchie posizioni sui motori di ricerca?
Ciao Davide stiamo andando un po’ fuori tema con questi commenti.
Quello che devi fare è rimuovere quei meta. Non avendo accesso al tuo sito non posso sapere cosa hai fatto. Una volta rimossi quei meta appena Googlebot ripasserà per il tuo sito riprenderà ad indicizzare le pagine, ma non c’è un tempo standard.
Il problema è quello che ti ho descritto quindi devi semplicemente capire chi mette quei meta.
Ciao Andrea,il mio sito e’ .it vorrei passare ad un altro nome che sia .co.uk ti chiedo se faccio il redirect 301 questo mi aiuta a migliorare il posizionamento del mio attuale sito? ( che essendo un .it e’ limitato nel mercato uk)
o pensi che sia meglio fare un nuovo sito partendo da zero ( il, che implica 3- 4 mesi per essere posizionato?
Altra cosa nel fare il redirect rischio di perdermi pezzi o avere danni al sito esistente?
TI RINGRAZIO
Francesca
Dipende Francesca,
dipende dalla tua situazione. A chi è rivolto attualmente il tuo sito?
È in inglese oppure in italiano?
Ciao Andrea,
ho un “piccolo” problema su un redirect da terzo dominio verso cartella… ti spiego meglio la situazione:
attualmente ho un blog su un dominio di terzo livello (blog.nomesito.it) che è in wordpress, quindi la sua struttura permalink è ad esempio blog.nomesito.it/2013/09/nome-articolo/
Ora devo cambiare server, e il blog andrà su nomesito.it/blog/
Per questo, prima di far puntare i DNS al nuovo server, ho impostato il file host del mio computer facendo puntare blog.nomesito.it all’IP del nuovo server
Dal pannello cPanel del nuovo server ho impostato il sottodominio blog.nomesito.it e un redirect verso nomesito.it/blog/
Il redirect funziona correttamente in locale, ma non funzionano i redirect di tutte le altre pagine.. in pratica ho tenuto la stessa struttura permalink e vorrei impostare nell’htaccess l’istruzione per cui tutto il traffico proveniente da url blog.nomesito.it/* vada verso nomesito.it/blog/*
Spero di essere stato abbastanza chiara… se così non fosse integro 🙂
Grazie mille, confido in te!
Ciao Laura,
non conosco cPanel, ma posso intuire che tu debba evitare il redirect via cPanel e inserire nell’htaccess del sottodominio il codice che trovi alla voce “Da sito vecchio a nuovo” di questa guida. 😉
Ciao Andrea,
mi servirebbe una delucidazione in più, che credo non sia stata trattata nella tua guida.
Il mio problema è:
devo reindirizzare molte pagine da “articolo/2” ad “articolo”, essendo stati divisi gli articoli in due pagine.
Ogni reindirizzamento deve puntare alla parte prima e la parte seconda dovrà essere cancellata.
Esiste un qualche metodo che mi permette di fare ciò?
Ti ringrazio anticipatamente.
Non ho capito il tuo caso.
Ciao Andrea, bell’articolo! Io due settimane fa su WordPress – per errore – ho creato e pubblicato due pagine (hanno solo il titolo), ma ora vorrei cancellarle per trasformarle in categorie (è quello che dovevano essere sin dal principio). Quale soluzione suggerisci?
Grazie mille!
Fai un 301 dalle pagine alle categorie.
Lo stavo per fare, la tua conferma mi conforta 😉 Grazie ancora!
Ciao Andrea,complimenti per l’articolo!
Ho problemi nel reindirizzare pagine di un sitovecchio.net al sitonuovo.it che sono ancora linkate da google e che quindi portano a un 404.
Le pagine sono del tipo http://www.sitovecchio.net/cartella/cartella/ e ho provato sia con
RewriteCond %{HTTP_HOST} ^sitovecchio.net/cartella/cartella$ [NC]
RewriteRule ^(.*)$ http://www.sitonuovo.it/$1 [R=permanent,L]
e sia con
redirect 301 /sitovecchio.net/cartella/cartella http://www.dominio.it
Ci sono degli errori..?
Grazie mille
Che errori ti da?
Salve, è possibile utilizzare redirect 301 per indirizzare un dominio verso una pagina facebook?
Certo
Ciao Andrea, come al solito impeccabile.
Ho un grosso dubbio:
se volessi indirizzare tutte le sottocartelle nella directory contenente, ad esempio:
https://www.miosito.com/it/realizzazioni/inside-out
su
https://www.miosito.com/it/realizzazioni/
La regola è corretta?
Redirect 301 /it/realizzazzioni/* https://www.miosito.com/it/
Grazie
Reindirizzare dove? Verso la stessa pagine di un’altra cartella o tutte verso un url?
Scusami il ritardo Andrea.
mi spiego meglio, ho una serie di url fatte cosi:
https://www.miosito.com/it/realizzazioni/a
https://www.miosito.com/it/realizzazioni/b
https://www.miosito.com/it/realizzazioni/c
https://www.miosito.com/it/realizzazioni/d
ecc
devono essere rendirizzate tutte alla cartella che li contiene
https://www.miosito.com/it/realizzazioni/
Grazie ancora
Si allora la regola è corretta
Grazie Andrea, ultima cosa se posso 🙂
Mi sono accorto che delle pagine del sito sono raggiungibili senza / finale, ad esempio:
https://www.miosito.com/it/realizzazioni/inside-out
https://www.miosito.com/it/realizzazioni/inside-dx
https://www.miosito.com/it/realizzazioni/inside-sx
https://www.miosito.com/it/realizzazioni/inside-in
vorrei “forzarle” a tutte con lo / finale, che diventino:
https://www.miosito.com/it/realizzazioni/inside-out/
https://www.miosito.com/it/realizzazioni/inside-dx/
https://www.miosito.com/it/realizzazioni/inside-sx/
https://www.miosito.com/it/realizzazioni/inside-in/
senza fare i 301 su ognuna esiste una regola su htacess ?
Grazie mille
Si dovrebbe bastare una rewrite rule tipo la seguente
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]