• Super User

    togliere l'identificatore nel rewrite

    Salve a tutti,
    una domanda che so già essere banale per molti di voi, ma io non sono un esperto di url rewrite.

    Hosting Linux, nel file .htaccess ho inserito la seguente regola di riscrittura:

    RewriteEngine on
    RewriteRule ^([0-9]+)-([^/]+).php$ nome.php?ide=$1&nome=$2
    RewriteRule ([^/]+)-([0-9]+).php$ cognome.php?cognome=$1&ide=$2

    Il primo mi da pagine del tipo
    3-nome.php

    Il secondo
    cognome-3.php

    L'identificatore mi serve in tutti i modi per prelevare un record dal db in nome.php e cognome.php

    Come posso toglierlo dalle pagine 3-nome.php e cognome-3.php per ottenere semplicemente nome.php e cognome.php?

    Ho provato a mettere così:

    RewriteEngine on
    RewriteRule ([^/]+).php$ nome.php?nome=$1&ide=$2
    RewriteRule ([^/]+)-qualcosa.php$ cognome.php?nome=$1&ide=$2
    Ma alle pagine "nome.php" e "cognome.php" non viene passato l'identificatore che mi permette di prelevare i dati dal DB...

    Dove sbaglio???

    Grazie a chiunque potrà darmi un suggerimento...


  • Moderatore

    Non è che sbagli, è che proprio così non si può fare.
    Tu considera che il giro del rewrite è il seguente. Dall'indirizzo che leggo ricavo le variabili da passare alla pagina che poi le processa.
    Se tu chiami una pagina nome.php l'unica variabie che puoi passare è "nome" a questo punto..ma dato che come mi sembra di aver capito la tua discriminante è ide (identificativo I suppose) l apagina php che processerà i dati non ha la variabile per lavorare.
    Quindi, o metti nel tuo db un identificativo che sia nome e poi fai le query su quello oppure devi per forza mettere l'identificativo.
    A meno che tu non inserisca ogni nome in una tabella di correlazione, lo associ ad un id e poi passi da li per ricavarti l'ide, ma mi sembra un giro in più..forse più pulito a livello di rewrite ma più corposo a livello di programmazione.
    Spero di averti dato le risposte che cercavi
    :ciauz:


  • Super User

    Ti ringrazio!
    La tua spiegazione è chiara e precisa. Dovrò utilizzare una pagina del tipo ide-nomepagina.php perchè l'identificatore (ide) è necessario per prelevare i dati dal DB.

    Un saluto e grazie ancora...