Visualizzazione risultati 1 fino 28 di 28

Discussione: $_GET un po' speciale

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito $_GET un po' speciale

    Ciao a tutti.
    Non so se occorre soltanto il PHP o anche .htaccess.
    Vorrei fare in modo che pagina.php?topolino equivalga a pagina.php?nome=topolino.
    Grazie.

  2. #2
    Guest

    Predefinito

    Ma a questo punto fai pagina.php/topolino o meglio pagina/topolino.

    Cmq devi usare il rewrite tramite .htaccess

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Mi servirebbe a fare un redirect ad un'altra pagina e non vorrei che Google memorizzasse quella come la pagina di destinazione.
    Comunque, come dovrei sistemare .htaccess?

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Mi servirebbe a fare un redirect ad un'altra pagina e non vorrei che Google memorizzasse quella come la pagina di destinazione.
    Puoi spiegarti meglio (magari indicando anche le pagine in questione)? Forse esiste una soluzione più semplice od efficace di quella che tu hai in mente.

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Allora: ho pagina.php che effettua un redirect a varie pagine, a seconda dell'id.
    Mettiamo che voglio andare a index.php eseguendo una query.
    Devo passare da pagina.php per poi andare avanti.
    Quindi, dopo aver dato a index.php l'id "1", invece di andare su pagina.php?id=1, vorrei andare su pagina.php?1.
    Spero di essermi spiegato meglio.
    Grazie.

  6. #6
    Guest

    Predefinito

    Chiesi la stessa precisa ed identica cosa: http://forum.it.altervista.org/javas...ry-string.html


  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie, ma io dovrei modificare .htaccess in modo che /Url?url=text diventi /Url?text.
    Da quel che ho visto non hai il mio stesso problema...
    #Da forum.php a community?forum
    #Da forum.php?n= a community?forum=Nome+del+forum
    #Da forum.php?t= a community?thread=ID_Titolo+del+topic
    #Da forum.php?p= a community?post=ID
    Ultima modifica di radiodelmomento : 05-03-2012 alle ore 14.02.51

  8. #8
    Guest

    Predefinito

    L'unica differenza è che io andrei a "coprire" il nome del file al posto della chiave dell'array $_GET.

    andreafallico poi ha scritto nonostante la prova:
    Citazione Originalmente inviato da andreafallico Visualizza messaggio
    E allora temo che non si può, perchè proprio quel carattere indica che inizia la query string.
    Codice diverso, principio uguale, non capisco dove non sia uguale.


  9. #9
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Quindi, da quel che ho capito fino ad ora dovrei fare in questo modo.
    Codice:
    RewriteRule ^Url?$ Url?url=$1 [L]
    Dovrei, perché non funziona.
    Dove sbaglio?
    Grazie.

  10. #10
    Guest

    Predefinito

    Per usare $1 devi prima definirlo (il gruppo)

    Codice:
    RewriteRule ^Url?(.*)$ Url?url=$1 [L]

  11. #11
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Così non può funzionare, l'espressione regolare della direttiva RewriteRule viene applicata ad un percorso, non all'URL. Bisogna usare il codice proposto da Programmazioned nella discussione indicata da Biccheddu.

  12. #12
    Guest

    Predefinito

    Aspetta, io l'ho inteso nel senso che Url era messo li come segnaposto per il percorso reale.

    Se ho capito male, allora si, così non funziona. Cmq vale sempre lo stesso che se non viene prima "creato" il gruppo non lo puoi usare ($1, $2, ...)

  13. #13
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Non ci sto capendo molto...
    Ho definito $1, in questo modo:
    Codice:
    RewriteRule ^Url?([a-zA-Z0-9]+)$ Url?url=$1 [L]
    Non capisco dov'è che sbaglio.
    Grazie.

  14. #14
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Sbagli nel credere che l'espressione regolare scritta nella direttiva RewriteRule venga verificata sull'URL della richiesta. Viene verificata su un percorso, per questo non potrà contenere la query.
    Devi quindi usare una direttiva RewriteCond tramite la quale puoi ottenere la query, fai riferimento al codice della discussione che ha indicato Biccheddu.

    Comunque io continuo a non capire a cosa ti serva tutto ciò...

  15. #15
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Non riesco ad arrivare alla soluzione.
    Questo da persino errore!
    Codice:
    RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$ Url?url=$1 [L]
    Ho provato anche in questo modo:
    Codice:
    RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$ Url?url=$1
    RewriteRule ^Url?$ Url?url=%1 [L]
    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Comunque io continuo a non capire a cosa ti serva tutto ciò...
    Mi serve ad avere link più "puliti" e più semplici da ricordare.

  16. #16
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    La direttiva RewriteCond necessita di soli due parametri, non tre.
    Ti consiglio di leggerti la documentazione. http://httpd.apache.org/docs/current...ml#rewritecond

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

    Predefinito

    Btw, per lottare con mod_rewrite suggerisco di provarlo in locale, dove è possibile attivare il RewriteLog e vedere cosa sta succedendo, invece di muoversi al buio.

    Post saggio:
    http://forum.ivorde.ro/debug-apache-...tives-t31.html

  18. #18
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie a tutti, ma non sono comunque riuscito a risolvere il mio problema.
    Ho preso come esempio una stringa che funziona perfettamente, che modifica Script?nome=testo in Script/testo.
    Codice:
    RewriteRule ^Script/([a-zA-Z0-9]+)$		Script.php?nome=$1 [QSA,L]
    Ho provato a modificare soltanto la stringa e karl94 mi ha detto che devo utilizzare RewriteCond.
    Quindi ho provato ad inserirlo con un po' di logica e adesso, dopo un'altra segnalazione, ho modificato la stringa nel seguente modo.
    Codice:
    RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$
    RewriteRule ^Url?$ Url?url=%1 [L]
    Non da' più errore, ma non funziona nemmeno.
    Cosa devo cambiare?
    Per quanto riguarda la prova in locale non sono mai riuscito ad attivare un database locale e, dato che il mio sito include un database, ho provato sempre in remoto.
    Grazie ancora.

  19. #19
    Guest

    Predefinito

    radiodelmomento sei passato da voler usare i valori delle chiavi a chiavi vere e proprie dopo il ?.

    E in base a questo ti ho citato il mio post dove è esplicitamente scritto che non è possibile.

    Per avere Script/testo, invece, devi fare così:
    Codice:
    RewriteRule ^Script/([a-zA-Z0-9]+)$ Script?url=$1 [L,QSA]
    Dove testo, in questo caso, è il valore di url.

    QSA invece significa Query String Append e serve per poter utilizzare la Query String, appunto, nell'url rewrite, esempio:
    Codice:
    Script/testo?k1=v1&k2=v2

  20. #20
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    No, quello era un altro script che già funzionava e che utilizzo che avevo preso come esempio.
    Il mio problema non è ancora cambiato.
    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    dovrei modificare .htaccess in modo che /Url?url=text diventi /Url?text.
    Grazie.

  21. #21
    Guest

    Predefinito

    Evidentemente non hai letto la discussione che ti ho linkato...
    Citazione Originalmente inviato da programmazioned Visualizza messaggio
    [...] Se comunque sei convinto di voler proseguire su questa strada, ti faccio un esempio con la seconda regola:
    Codice:
    RewriteCond %{QUERY_STRING} ^forum=([+a-zA-Z0-9]*)(\.html)?$
    RewriteRule ^community?$ forum.php?n=%1 [L]
    Comunque te lo sconsiglio, meglio utilizzare un altro metodo.


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

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Comunque te lo sconsiglio, meglio utilizzare un altro metodo.
    Si, in generale tutti questi rigiri sono confusionari e non portano un grande vantaggio. Ed indirizzi tipo pagine?qualcosa vanno a creare problemi a motori di ricerca e compagnia.

    Un URL dovrebbe essere una cosa pulita, che punta o ad una directory ( sito.com/sezione/ ) oppure ad un file ( sito.com/sezione.html ). Altre opzioni sono complicazioni non necessarie e spesso con effetti collaterali.

    Se vuoi gestire tutto tramite un unico script, scriviti un front controller ed attivalo con una regola di mod_rewrite.

  23. #23
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    La discussione l'ho letta e ho preso quel codice come spunto, ma non riesco proprio ad arrivare alla soluzione!
    Ho appena provato così e non funziona.
    Codice:
    RewriteCond %{QUERY_STRING} ^Url=([+a-zA-Z0-9]*)(\.php)?$
    RewriteRule ^Url?$ Url.php?url=%1 [L]
    Grazie per i consigli ma so l'uso che ne devo fare e mi servirebbe questo codice.

  24. #24
    L'avatar di andreafallico
    andreafallico non è connesso Super Moderatore
    Data registrazione
    02-06-2009
    Messaggi
    1,981

    Predefinito

    Prova così:

    /Url.php?url=text -> /Url?text
    Codice:
    RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$
    RewriteRule ^Url$ /Url.php?url=%1 [L]
    /Url.php?url=text -> /Url.php?text
    Codice:
    RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$
    RewriteRule ^Url.php$ /Url.php?url=%1 [L]

  25. #25
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, grazie mille! Adesso funziona perfettamente.
    Ho usato il secondo codice, ho scritto Url?text e funziona, forse perché avevo già scritto che /Pagina è uguale a /Pagina.php...
    Thanks!

  26. #26
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Scusa, come si fa ad aggiungere i caratteri speciali?
    O semplicemente permettere di scrivere tutti i caratteri.
    Codice:
    RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$
    Grazie.

  27. #27
    Guest

    Predefinito

    Studia le basi delle espressioni regolari: http://www.regular-expressions.info/charclass.html


  28. #28
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie, era quello che cercavo... non sapevo che si chiamassero "espressioni regolari".

Regole di scrittura

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