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

    rewrite con query senza =

    Buongiorno a tutti,

    ho una query del genere
    ma non riesco a farla funzionare con .htacces con un normale rewrite_cond

    scrivendo
    codice:
    RewriteRule ^([^/\.]+)/([^/\.]+)/?(.*)$ pagina.php?id=$3 [L]
    ottengo un errore 404, se tolgo dalla query il punto interrogativo l'id non viene stampato

    che regola posso usare?

    grazie.
    ---------------------------
    danielix05

  2. #2
    Il punto di domanda viene interpretato come un quantificatore {0,1}.
    In poche parole dici al motore che quello slash prima del ? può esserci o no.

    Per usare il punto di domanda devi usare il carattere di escape \.

    codice:
    RewriteRule ^([^/\.]+)/([^/\.]+)/\?(.*)$ pagina.php?id=$3 [L]
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  3. #3

    not found

    scrivendo un path del genere

    mi restituisce questo errore
    codice:
    The requested URL /basepath/dir-2/dir-3/dir-4/ was not found on this server.
    praticamente si ferma allo slash prima del ?


    il codice che sto usando, per esteso è
    codice:
    RewriteEngine On
    RewriteBase /basepath/
    
    RewriteRule ^dir-2/([^/\.]+)/([^/\.]+)/\?(.*)$ pagina.php?id=$3 [L]
    ---------------------------
    danielix05

  4. #4

    up!

    ---------------------------
    danielix05

  5. #5
    Purtroppo ciò che sta dopo il ? non viene interpretato come parte del file da te richiesto, ma viene trasmesso come dati GET.

    Quindi se tu richiedi l'url http://www.sito.it/basepath/dir-2/dir-3/dir-4/?155 al server viene richiesta la pagina http://www.sito.it/basepath/dir-2/dir-3/dir-4/ e passata la stringa "155" come QUERYSTRING.

    Quindi nel tuo caso basta riscrivere così

    codice:
    RewriteRule ^dir-2/([^/\.]+)/([^/\.]+)/$ pagina.php [L]
    Poi nelle prime righe di codice in pagina.php scrivi un codice del tipo:
    Codice PHP:
    foreach($_GET as $id => $val) {
    break;
    // inserisco subito il break, così da assegnare a $id il valore della chiave 
    // del primo elemento dell'array $_GET, $val infatti rimarrà vuota.

    Così funziona, e ti permette volendo di accodare altre variabili GET partendo però subito con la & poiché il ? l'hai già usato.
    Ad es. http://www.sito.it/basepath/dir-2/di...4/?155&a=b&c=d
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  6. #6

    RISOLTO GRAZIE A 8matt5

    Grazie ancora,
    peccato che, non potendo variare l'indirizzo non posso appendere altre get nel .htacces

    tipo
    codice:
    RewriteRule ^dir/([^/\.]+)/([^/\.]+)/$&TIPOLOGIA=ok landing.php [L]
    ---------------------------
    danielix05

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.