Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    problema url rewriting e redirect con querystring

    ciao a tutti
    ho necessità di aggiornare alcuni link di un sito che ho rifatto
    nella fattispecie da pagina (per esempio)

    www.sito.it/categoria.php?c=calcio

    a

    www.sito.it/articoli_sul_calcio.html

    nel file .htaccess ho creato questa regola

    RewriteCond %{REQUEST_URI} ^/categoria\.php$
    RewriteCond %{QUERY_STRING} ^c=calcio$
    RewriteRule ^(.*)$ http://www.sito.it/articoli_sul_calcio.html [R=301,L]

    funziona, però la pagina a cui rimanda è

    www.sito.it/articoli_sul_calcio.html?c=calcio

    anche se io non ho inserito %1 come fatto altre volte per passare la query
    come posso dire al server che non voglio che mi passi anche la querystring nella pagina nuova?

    grazie
    ciao
    Luca

  2. #2
    Non dipende dalla regola che hai mostrato... ma da altre presenti nell'htaccess o nella configurazione apache... il 301 forza la rilettura di tutte, anche se c'è L, poichè carica un nuovo url... se l'url di destinazione lo metti diretto, ti da lo stesso problema?
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  3. #3
    ciao, grazie della risposta

    se l'url di destinazione lo metto diretto (cioe direttamente nella barra del browser per essere totalmente chiaro) non viene aggiunta la querystring.

    forse devo in qualche modo scrivere nell'htaccess che le querystring vecchie vanno azzerate seguendo il link nuovo?

    grazie
    ciao
    Luca

  4. #4
    Controlla le altre regole che coinvolgono categoria.php e vedi se ci può essere un'interferenza. Di più, senza vederle, non so dirti.
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  5. #5
    uso solo questa regola per questa pagina, ripetuta 5 volte per 5 categorie diverse

    per gli articoli ho fatto così

    RewriteCond %{REQUEST_URI} ^/articolo.php$
    RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
    RewriteRule ^(.*)$ redirect_articolo.php?id=%1 [L]

    nel file redirect_articolo.php costruisco l'url nuovo e mando l'header 301 e la nuova location
    funziona perfettamente

    avendo passato %1 come parametro per la querystring per mantenerla pensavo che non usando il parametro questa non venisse passata (mi pareva logico)

    potrei anche usare questa soluzione anche per le categorie, con una pagina redirect_categoria.php, ma preferirei fare tutto nel file htaccess, anche perchè volevo aggiungere una regola in fondo per reindirizzare tutte le vecchie pagine anche dinamiche che non mi servono più alla homepage, e non vorrei avere un'homepage piena di querystring varie

    grazie
    Luca

  6. #6
    Ti riporto un pargrafo dalla guida apache, di cui non sapevo nulla, poichè di solito io il rewrite lo uso in modo diverso (opposto direi).

    Note: Query String
    The Pattern will not be matched against the query string. Instead, you must use a RewriteCond with the %{QUERY_STRING} variable. You can, however, create URLs in the substitution string, containing a query string part. Simply use a question mark inside the substitution string, to indicate that the following text should be re-injected into the query string. When you want to erase an existing query string, end the substitution string with just a question mark. To combine a new query string with an old one, use the [QSA] flag.
    Da cio pare che risolvi tutti i tuoi problemi semplicemente mettendo un ? al termine dell'url di destinazione... prova
    UtèñtE non ti dirà mai come trasformare l'argilla in marmo, ma se gli chiederai come progettare una simulazione con le bacche di mirto, ti risponderà: "Versane ancora!".

  7. #7
    Da

    codice:
    RewriteCond %{REQUEST_URI}  ^/categoria\.php$
    RewriteCond %{QUERY_STRING} ^c=calcio$
    RewriteRule ^(.*)$ http://www.sito.it/articoli_sul_calcio.html [R=301,L]
    a

    codice:
    RewriteCond %{REQUEST_URI}  ^/categoria\.php$
    RewriteCond %{QUERY_STRING} ^c=calcio$
    RewriteRule ^(.*)$ http://www.sito.it/articoli_sul_calcio.html? [R=301,L]
    Edit. Leggo solo ora che Utente aveva già dato la soluzione

    Da cio pare che risolvi tutti i tuoi problemi semplicemente mettendo un ? al termine dell'url di destinazione... prova

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.