Visualizzazione risultati 1 fino 8 di 8

Discussione: [.htaccess] Redirect più avanzato

  1. #1
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito [.htaccess] Redirect più avanzato

    Ciao a tutti.
    Sto ristrutturando totalmente Digilinux ma avrei bisogno di un aiuto: mentre prima per accedere agli articoli la sintassi del link era del tipo
    Codice:
    articoli/nome_articolo.html
    adesso per visualizzare lo stesso articolo l'indirizzo è
    Codice:
    articolo.php?leggi=nome_articolo
    .

    In pratica articolo.php contiene un include al "vecchio" articoli/nome_articolo.html.
    Il problema è che Google ha indicizzato ottimamente gli articoli con i vecchi indirizzi, ma adesso (per avere la nuova grafica, i nuovi link...) vorrei che i vecchi articoli puntino ai nuovi.

    So che con .htaccess è possibile creare redirect parecchio trasparenti, quasi invisibili dai navigatori e ben accetti da Google.
    Come si può creare un istruzione per Apache che converta automaticamente articoli/nome_articolo.html in articolo.php?leggi=nomearticolo?

    Grazie.

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    È un rewrite di quelli più banali. A metà di questo articolo c'è praticamente il tuo caso.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Scusa per la mia incompetenza, ma non riesco a farlo funzionare...
    ho scritto questa riga (dopo averne provate innumerevoli altre):
    Codice:
    RewriteRule ^articolo.php?leggi=([a-zA-Z0-9_-]+)$ articoli/$1
    ma non funziona...
    cosa sbaglio?

    -----

    Ho fatto altri tentativi: copiato e incollato esempi da altre pagine web (provando a fare l'inverso), scritto codice che dovrebbe funzionare (cosa c'è di male in
    Codice:
     RewriteRule ^articolo.php?leggi=([0-9]+)$ articoli/$1
    ?)
    Ho perfino scritto stringhe del genere:
    Codice:
    RewriteRule ^articolo.php?leggi=irssi articoli/irssi.html
    Perchè non funziona niente?
    Ultima modifica di digilinux : 11-10-2012 alle ore 11.00.02

  4. #4
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Altrimenti c'è un metodo php per fare in modo che, se la pagina rileva di essere inglobata in articolo.php non succede nulla, altrimenti effettua un redirect HTML ad articolo.php?

    Grazie dovrei riuscire a risolvere il problema abbastanza in fretta perchè in questo modo sto perdendo un sacco di visitatori provenienti da Google.

  5. #5
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,262

    Predefinito

    Non è che hai invertito i parametri della regola?

    RewriteRule <dal-browser-arriva-questo> <viene-riscritto-in-questo>
    Ultima modifica di dreadnaut : 12-10-2012 alle ore 11.39.12

  6. #6
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Grazie! Ora in effetti il redirect di singole pagine funziona correttamente.
    Tuttavia non riesco ancora ad impostare la regexp:
    Codice:
    RewriteRule ^articoli/$1.html http://digilinux.altervista.org/articolo.php?leggi=(.*)
    Non mi funziona :-(

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,262

    Predefinito

    Ma hai mai letto la documentazione di mod_rewrite, o guardato almeno una guida?

    La regexp è il primo parametro, il secondo è il pattern da sostituire. Quindi (.*) va nel primo, e $1 nel secondo. Immaginala come una chiamata a preg_replace(), se ti aiuta.

  8. #8
    L'avatar di digilinux
    digilinux non è connesso Utente attivo
    Data registrazione
    27-04-2009
    Messaggi
    478

    Predefinito

    Grazie per l'aiuto e la pazienza...

    Comunque avevo letto delle guide, evidentemente le avevo interpretate male.
    Probabilmente, dato che leggevo sempre di esempi opposti al mio, invertivo tutti i parametri, sbagliando.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •