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.
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.
Ma a questo punto fai pagina.php/topolino o meglio pagina/topolino.
Cmq devi usare il rewrite tramite .htaccess
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?
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.
Chiesi la stessa precisa ed identica cosa: http://forum.it.altervista.org/javas...ry-string.html
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
Quindi, da quel che ho capito fino ad ora dovrei fare in questo modo.
Dovrei, perché non funziona.Codice:RewriteRule ^Url?$ Url?url=$1 [L]
Dove sbaglio?
Grazie.
Per usare $1 devi prima definirlo (il gruppo)
Codice:RewriteRule ^Url?(.*)$ Url?url=$1 [L]
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.
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, ...)
Non ci sto capendo molto...
Ho definito $1, in questo modo:
Non capisco dov'è che sbaglio.Codice:RewriteRule ^Url?([a-zA-Z0-9]+)$ Url?url=$1 [L]
Grazie.
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ò...
Non riesco ad arrivare alla soluzione.
Questo da persino errore!
Ho provato anche in questo modo:Codice:RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$ Url?url=$1 [L]
Mi serve ad avere link più "puliti" e più semplici da ricordare.Codice:RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$ Url?url=$1 RewriteRule ^Url?$ Url?url=%1 [L]
La direttiva RewriteCond necessita di soli due parametri, non tre.
Ti consiglio di leggerti la documentazione. http://httpd.apache.org/docs/current...ml#rewritecond
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
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.
Ho provato a modificare soltanto la stringa e karl94 mi ha detto che devo utilizzare RewriteCond.Codice:RewriteRule ^Script/([a-zA-Z0-9]+)$ Script.php?nome=$1 [QSA,L]
Quindi ho provato ad inserirlo con un po' di logica e adesso, dopo un'altra segnalazione, ho modificato la stringa nel seguente modo.
Non da' più errore, ma non funziona nemmeno.Codice:RewriteCond %{QUERY_STRING} ^Url?([a-zA-Z0-9])$ RewriteRule ^Url?$ Url?url=%1 [L]
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.
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ì:
Dove testo, in questo caso, è il valore di url.Codice:RewriteRule ^Script/([a-zA-Z0-9]+)$ Script?url=$1 [L,QSA]
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
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.
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.
Grazie per i consigli ma so l'uso che ne devo fare e mi servirebbe questo codice.Codice:RewriteCond %{QUERY_STRING} ^Url=([+a-zA-Z0-9]*)(\.php)?$ RewriteRule ^Url?$ Url.php?url=%1 [L]
Prova così:
/Url.php?url=text -> /Url?text
/Url.php?url=text -> /Url.php?textCodice:RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$ RewriteRule ^Url$ /Url.php?url=%1 [L]
Codice:RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$ RewriteRule ^Url.php$ /Url.php?url=%1 [L]
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!
Scusa, come si fa ad aggiungere i caratteri speciali?
O semplicemente permettere di scrivere tutti i caratteri.
Grazie.Codice:RewriteCond %{QUERY_STRING} ^([a-zA-Z0-9]+)$
Studia le basi delle espressioni regolari: http://www.regular-expressions.info/charclass.html
Grazie, era quello che cercavo... non sapevo che si chiamassero "espressioni regolari".