• User

    ciao e grazie francesco,

    la necessità di trovare una regola generale viene proprio dal numero eccessivo di indirizzi da riscrivere. potrei farlo a mano, non è un problema, ma credo che inserire ulteriori 150/200 regole singole nel file htaccess lo appesantisca troppo

    analizzando i vari errori rilevati da gwt, noto che esistono link di questo tipo

    nomecategoria/27-nomearticolo.html
    nometag1/27-nomearticolo.html
    nometag2/27-nomearticolo.html

    ho pensato: visto che io devo reindirizzare tutto a

    nomearticolo.html

    potrei creare una o due regole di questo tipo

    vai da ***qualsiasicosacisiascritto/27-nomearticolo.html ***a nomearticolo.html

    in questo modo, credo che ridurrei le regole da scrivere da 150/200 a 20/30 .. decisamente meglio!

    quale sarebbe la regola da scrivere? io ho fatto un po' di prove con alcune regole trovate sui vari siti internet, ma nessuna ha funzionato

    ringrazio anticipatamente

    Enrico

    PS: non è indispensabile automatizzare l'eliminazione dell'id articolo, quindi se non è possibile con le regex, non c'è problema!


  • Moderatore

    Se parli di redirect 301 e non vuoi eliminare l'id articolo puoi provare così:

    
    RedirectMatch 301 /nomecategoria|nometag1|nometag2/(.*) http :// www . tuodominio . com /$1
    
    

    Questa regola va bene se prima di *nomecategoria *c'è solo il dominio, cioè va bene ad esempio per:
    http :// www . tuodominio . com / nomecategoria/pippo.html
    ma non va bene per:
    http :// www . tuodominio . com / qualcosa-prima / nomecategoria/pippo.html

    nomecategoria|nometag1|nometag2 -> sono le opzioni, significa che nell'url vecchio può starci una di queste tre cose (le opzioni le separi con il simbolo | ).

    Se vuoi tenere "category" puoi fare così:

    
    RedirectMatch 301 /category/nomecategoria|nometag1|nometag2/(.*) http :// www . tuodominio . com /category/$1
    
    

    Se vuoi eliminare la "category":

    
    RedirectMatch 301 /category/nomecategoria|nometag1|nometag2/(.*) http :// www . tuodominio . com /$1
    
    

    Ci potrebbero essere esigenze diverse, un po' più complicate. Se è così prova a postare un elenco di 5-10 url da reindirizzare, così gli utenti del forum hanno più info per aiutarti. :wink3:

    Francesco


  • User Newbie

    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.25

    Ho 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 funziona

    Ringrazio in anticipo e mi scuso se mi sono dilungato :gthi:


  • Moderatore

    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


  • User Newbie

    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" :arrabbiato:

    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.


  • Moderatore

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


  • User Newbie

    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!


  • User Newbie

    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 tipo

    index.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


  • User Newbie

    ci sono quasi riuscito...
    con il seguente codice riesco ad indirizzare verso la pagina ricostruita

    RewriteCond %{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 risultato

    libri-by/id/1.html?ub=item&id=1

    io invece vorrei soltato

    libri-by/id/1.html

    dove sbaglio?
    grazie


  • Moderatore

    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]
    
    

  • User Newbie

    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


  • Moderatore

    Ottimo, grazie del contributo. 🙂


  • User

    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.html

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


  • User Newbie

    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 stringa

    RewriteEngine 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.