- Home
- Categorie
- Digital Marketing
- Posizionamento Nei Motori di Ricerca
- Rimuovere query string e redirect 301 con .htaccess e mod_rewrite
-
Buongiorno a tutti,
sono nuovo di questo utilissimo forum e spero di postare nella sezione giusta....Mi accodo a questa discussione perché ho anch'io un problemino con la query string view=featured
Premetto che ho un sito Joomla 2.5.25Ho seguito il preziosissimo suggerimento di FDA inserendo nel mio file .htacces la regola suggerita da FDA
Ho aggiunto però la lettera d a view=featured altrimenti non mi funzionava.
Risultato:
le pagine con il percorso miosito.com /component/content e miosito.com /component/content/?view=featured vengono correttamente reindirizzate sulla home... e questo per me è già un bel risultato, fin qui tutto ok.Purtroppo però Google mi indicizza ancora la pagina miosito.com/?view=featured
Non capisco il perché e soprattutto mi chiedo se proprio non ci sia modo di redirezionare anche questa...
PS
già provato con redirect nativo di Joomla e con ReDJ ma non funzionaRingrazio in anticipo e mi scuso se mi sono dilungato
-
Ciao fafy,
la d mancante è un refuso, grazie per averlo evidenziato.Per il tuo problema, aggiungi al tuo .htaccess:
RewriteCond %{REQUEST_URI} ^/$ RewriteCond %{QUERY_STRING} ^(view=featured)$ RewriteRule ^(.*)$ http://miosito.com? [R=301,L]
Controlla se ci sono problemi con lo slash finale, ma dovrebbe andare tutto bene.
Considera che nell'htaccess conta anche la sequenza delle istruzioni, quindi se un'istruzione non funziona prova a inserirla prima di un blocco di istruzioni già presente.Aggiornaci per sapere se è andata bene.
Francesco
-
Ciao Francesco,
grazie mille per la dritta, ho fatto come hai detto e funziona perfettamente!Scusa se ne approfitto, ma è un mese che sto letteralmente combattendo contro pagine duplicate e sitelink "a random"
Ho notato appunto che nei site link Google si è messo, da qualche giorno, ad indicizzare una pagina con questa stringa:
miosto.com/index.php/component/content/?view=featured
che cosa mi suggeriresti di fare? Aggiungo una ulteriore regola all' .htacces?
Una cosa del tipo:RewriteCond %{REQUEST_URI} ^/index.php/component/content/$
RewriteCond %{QUERY_STRING} ^(view=feature)?$
RewriteRule ^(.*)$ (acca ti ti pi://)miosito.com? [R=301,L]Mi sembra strano che nonostante abbia abilitato la riscrittura degli url, ancora vengano trovate pagine del tipo:
miosto.com**/index.php/*** eccetera*
Che ne pensi?
Grazie ancora.
-
Ciao fafy.
Se Google ha scelto quell'url come sitelink c'è un motivo, probabilmente l'ha scelto seguendo un link, cosa che suggerisce due scenari:- Google ha individuato il link in precedenza, quando non era impostata la riscrittura friendly delle url dal pannello di Joomla!
- Google ha seguito un link tuttora presente
Ti consiglio di cercare il link nelle pagine (soprattutto in home page) guardando il sorgente per capire se ancora c'è quel link: se lo trovi puoi modificarlo in friendly url.
Non aggiungerei una regola all'htaccess e non credo che serva un redirect 301, al più dovrebbe comparire un rel canonical verso la url canonica (che è appunto quella friendly).
-
Ciao Francesco,
ti ringrazio... ho controllato nel sorgente della home e il link con index.php non è presente; Probabilmente, come dici tu, è un link scovato da Google prima che venisse attivata la ri-scrittura degli url (infatti ho, da circa due mesi, rinominato htaccess.txt in .htacces)...
Spero quindi che il problema si risolva da solo col tempo o che passando a Joomla 3 si riesca con il rel canonical ad ovviare a tutti questi problemi di duplicazione.
Vi terrò aggiornati, intanto grazie ancora!
-
ciao a tutti...
spero di aver trovato il luogo della risposta!
davvero nn riesco a capire cosa fare per risolvere il mio problema...
ho cambiato linguaggio per un sito.
sono passato da asp a php
adesso grazie al file htaccess vorrei mantenere l'indicizzazione sui motori di ricerca sfruttando il
rewriterule (mi pare) 301.
il mio problema è che nn riesco a portare le variabili querystring
il passaggio che vorrei ottenere èindex.asp?ub=item&id=var1 in pagina1.php?id=var1
index.asp?ub=var1&id=var2 in pagina2.php?ub=var1&id=var2
ho fatto qualche tentativo ma ho ottenuto un redirect senza variabili.
inoltre mi chiedevo se posso reindirizzare a qualcosa del tipoindex.asp?ub=item&id=var1 in /categoria/var1
sfruttando un reindirizzamento che mi riesce già
spero davvero in un aiuto...
nel frattempo vi ringrazio!
ciao
-
ci sono quasi riuscito...
con il seguente codice riesco ad indirizzare verso la pagina ricostruitaRewriteCond %{QUERY_STRING} ub=item&id=([^&]+)?
RewriteRule ^index.asp /libri-by/id/%1.html [R=301,L]il problema è che oltre alla variabile che mi serve, ovvero "id", mi riscrive di seguito tutte le querystring
ottenendo il seguente risultatolibri-by/id/1.html?ub=item&id=1
io invece vorrei soltato
libri-by/id/1.html
dove sbaglio?
grazie
-
Ciao gt_salvo e benvenuto sul Forum GT.
Prova ad aggiugere il punto interrogativo al secondo url nel rewrite rule, qualcosa del genere:RewriteCond %{QUERY_STRING} ub=item&id=([^&]+)? RewriteRule ^index.asp /libri-by/id/%1.html? [R=301,L]
-
grazie FDA per la risposta
ho appena risolto ma in altro modo
lo scrivo per utilità di altri capitati in questo stesso problema
in pratica ho messo [301, QSD] alla fine
QSD infatti toglie le query string che si porta dietro dalla regola
grazie ancora
-
Ottimo, grazie del contributo.
-
Seguendo anche la vostra discussione sto cercando di risolvere quanto segue:
ho degli articoli da componente duplicati del tipo
sito/dirA/1-testo1-teston.html
sito/dirB/1-testo1-teston.html
sito/dirC/1-testo1-teston.htmlVorrei reindirizzare il tutto in:
sito/dirD/1-testo1-teston.html
Ma devo condizionare il rewrite solo all'indirizzo che dopo la seconda dir inizia con un numero "sito/dirA/1-testo1-teston.html" quindi tranne sito/dirN/testo.html
Ho provato quanto segue ma non ho risposte dal server
RewriteCond %{QUERY_STRING} ^/([^/]+)/([0-9]+)-([^/]+)$
RewriteRule ^/([^/]+)/([0-9]+)-([^/]+)$ accatitipi.sito.ext/dir/$2-$3 [R=301]non riesco proprio a risolvere x come posso fare?
-
Salve ragazzi ho un problema con il redirect e le query string.
Vorrei reindirizzare le pagine di un vecchio sito alla nuova courtesy page temporanea
in attesa di rifare daccapo il sito.
Il problema è che i vecchi indirizzi sono di questo tipo "www-vinicolacherchi-it/vini.php?lang=it"
quindi ho provato inserendo nel file htaccess questa stringaRewriteEngine On
RewriteCond %{REQUEST_URI} ^/vini.php$
RewriteCond %{QUERY_STRING} ^lang=it$
RewriteRule ^(.*)$ nuovo link [L,R=301]ma non sembra funzionare.
Suggerimenti? Dove sto sbagliando?facendo così perdo il posizionamento di queste pagine o no?
Una volta rifatto il sito, quindi avendo nuovi indirizzi per quelle pagine,
dovrò di nuovo impostare un r301?Grazie per l'aiuto.