Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Htaccess e RewriteRule

  1. #1

    Htaccess e RewriteRule

    Ciao ragazzi.
    Ho un problema con il mio file .htaccess...sto cercando di cambiare l'indirizzo della pagina secondo le mie esigente.

    Per altri motivi, ho estremo bisogno di ricevere una variabile in un link del tipo:

    index-123.php

    ma oltre questo, in una pagina successiva devo ricevere una variabile di tipo:

    index-123.php?id=1


    Non riesco proprio a muovermi da questa situazione. Ho pensato di fare una regola in questo modo, ma non mi funziona, restituendo l'errore 404 di pagina non trovata.


    Codice PHP:
    RewriteRule ^admin/aa-([^/]+).php&id=([^/]+) admin/aa.php?idp=$1&id=$[L
    E' possibile quello che chiedo? Inoltre, c'è da precisare che la variabile "id" (la seconda quindi per intenderci), non sarà sempre presente, il link quindi potrebbe essere:

    aa-1.php oppure aa-1.php?id=1


    Come posso fare?
    Aiutoooo!






    Edit: mi sono accorto ora che forse ho sbagliato sezione...
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  2. #2
    Per il primo problema, è sufficiente inserire questo codice all'inizio del tuo script, senza andare a toccare mod_rewrite:

    Codice PHP:
    <?php 
    $_GET
    ['id'] = 1;
    ?>
    Per il secondo problema, puoi usare il flag QSA per accodare al tuo URL le variabili presenti originariamente nella querystring.

  3. #3
    Originariamente inviato da filippo.toso
    Per il primo problema, è sufficiente inserire questo codice all'inizio del tuo script, senza andare a toccare mod_rewrite:

    Codice PHP:
    <?php 
    $_GET
    ['id'] = 1;
    ?>
    Per il secondo problema, puoi usare il flag QSA per accodare al tuo URL le variabili presenti originariamente nella querystring.

    Ciao!
    Il problema è che una volta che mi rifà il collegamento come ad esempio aa-1.php?id=2, l'id anche con $_GET non me lo prende e mi da variabile vuota...

    Non conosco il flash QSA, che cosa è?
    C'è un modo alternativo per le mie esigenze?
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  4. #4
    Per il primo problema, è sufficiente modificare il codice in:

    Codice PHP:
    <?php 
    $_GET
    ['id'] = isset($_GET['id']) ? $_GET['id'] : 1;
    ?>
    Per quanto riguarda il resto, ho scritto flag, non flash. La descrizione del flag QSA la puoi trovare nella documentazione ufficiale di mod_rewrite.

  5. #5
    Originariamente inviato da filippo.toso
    Per il primo problema, è sufficiente modificare il codice in:

    Codice PHP:
    <?php 
    $_GET
    ['id'] = isset($_GET['id']) ? $_GET['id'] : 1;
    ?>
    Per quanto riguarda il resto, ho scritto flag, non flash. La descrizione del flag QSA la puoi trovare nella documentazione ufficiale di mod_rewrite.
    Scusa ho letto male! Hihi!
    Ok mi provo a documentare!


    Comunque così funziona, puoi solo spiegarmi il funzionamento? Non ho ben capito perchè così va mentre se metto solo $_GET non va

    Grazie mille!
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  6. #6

  7. #7
    Originariamente inviato da filippo.toso
    Ti suggerisco di iniziare leggendo il manuale ufficiale:

    http://www.php.net/isset
    http://www.php.net/manual/en/languag...arison.ternary
    Aspetta ho fatto male io la funzione. Lui ora non lo legge lo stesso, me lo sostituisce se non c'è con 1, ma anche se io lo passo lui me lo recupera sempre con 1.

    Ho messo ad esempio aa-3.php?id=50 e mi da sempre id=1 perchè non lo trova.

    Se verifico che esiste infatti mi restituisce false, anche se la variabile sopra c'è...

    Il codice è molto semplice, non ho messo controlli su variabile solo perchè sto facendo delle prove, ma il get (solo in questo caso, forse perchè sostitusco con l'htaccess) non me lo prende!

    Codice PHP:
    $idp=$_GET['idp'];
    if(isset(
    $_GET['id'])) die("noo"); 
    Questo "$aa", non ne vuole sapere di apparire, ma questo succede solo quando richiamo il link come pagina-1.php?id=3, mentre se la richiamo in pagina.php?idp=1&id=6, l'id giustamente appare.

    Penso che si tratta quindi di un problema nel replace, quello che mi è venuto in mente è: se il valore che l'htaccess rimanda alla pagina in

    codice:
    RewriteRule ^admin/aa-([^/]+).php admin/aa.php?idp=$1 [L]
    qui si vede chiaramente che dopo la prima variabile, l'id non lo passa. Potrebbe essere questo no?
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  8. #8
    Per quale motivo ti ostini a non andare a leggere il significato del flag QSA nella documentazione di mod_rewrite?

  9. #9
    Ora funziona così. Scusa ma non sapevo dell'esistenza!


    Grazie mille, a presto!
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

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 © 2024 vBulletin Solutions, Inc. All rights reserved.