- Home
- Categorie
- La Community Connect.gt
- Tutto sulla Community
- mod_rewrite
-
Sole, ma hai capito come fare alla fine?
-
ho qualche link interessante in ufficio... se mi ricordate lunedì li metto a disposizione
-
@Rinzi said:
ho qualche link interessante in ufficio... se mi ricordate lunedì li metto a disposizione
magari in lingua italiana
-
vediamo assieme un esempio semplice di .htaccess
ErrorDocument 404 http://www.miosito.com/errore.htm #REGOLE PER MOD_REWRITE RewriteEngine on RewriteRule ^dir/(.*)/([0-9])_([0-9]+).htm$ miapagina.php?p1=$1&p2=$2&p3=$3
la prima riga è abbastanza intuitiva, dice che in relazione ad un errore 404 (documento non trovato) deve essere inviato al client la pagina indicata ed in qusto caso http://www.miosito.com/errore.htm
ora vediamo la seconda parte:
il cancelletto è un semplice carattere di commento (utilissismo ovviamente)
RewriteEngine on
è una direttiva che attiva la funzione di mod_rewriteRewriteRule ^dir/(.*)/([0-9])_([0-9]+).htm$ miapagina.php?p1=$1&p2=$2&p3=$3
è una regola ma ne possono essere create di differenti e più d'una.
rewriterule è la parola chiave che indica l'inizio della regola
la prima parte definisce l'url da verificare
la seconda come convertirlo^ definisce l'inizio della stringa da verificare
$ definisce la fine della stringa da verificareogni carattere scritto al di fuori delle parentesi tonde costituisce una costante e quindi sono elementi che devono essere presenti perchè il mod_rewrite riconosca la stringa e la converta
gli elementi nelle tonde dicono di prendere la parte di stringa che sta in quella posizione e metterla in una variabile ad indice progressivo.
nel nostro caso il primo elemento che incontriamo nelle tonde è:
(.*)
questo elemento è il più flessibile in quanto permette di intercettare una stringa alfanumerica e di lunghezza variabile.gli altri elementi che sono presenti nell'esempio sono:
([0-9]) dice di catturare un carattere soltanto e questo carattere deve essere compreso tra 0 e 9
([0-9]+) dice di catturare un numero variabile di caratteri ma devono essere tutti numerici.
un esempio di url che verrà convertita con questa regola sarà:
RewriteRule ^dir/(.*)/([0-9])_([0-9]+).htm$ miapagina.php?p1=$1&p2=$2&p3=$3
http://www.miosito/dir/il-titolo-del-mio-articolo/1_5881252.htm
le stringhe intercettate saranno:
- il-titolo-del-mio-articolo
- 1
- 5881252
ora, diamo il via alla fantasia per trovare esempi più stimolanti
-
@EthanDane said:
@Rinzi said:
ho qualche link interessante in ufficio... se mi ricordate lunedì li metto a disposizionemagari in lingua italiana
magari... è in inglese...
**[url=http://tools.devshed.com/c/a/Web-Development/Module-mod-rewrite-Tutorial-Part-1/]tutorial MOD_REWRITE**
-
ora comincia ad essermi tutto più chiaro.
certo in inglese qualcosa può sfuggire ma grazie al mini tutorial di tymba le regole basi mi sono più chiare. Se dovessi rinominare pochi file potrei fare così:RewriteEngine on RewriteRule ^http://www.dominio.it/moto-usate.php?regione=basilicata$ http://www.dominio.it/moto-usate-basilicata.php
L'url vecchio compreso tra ^$ e quello nuovo, deveno essere scritti per intero con http://
-
heheheh esattamente il contrario:
RewriteEngine on RewriteRule ^moto-usate-(.*).htm$ moto-usate.php?regione=$1
in questo modo tutte le pagine che si chiamano moto-usate-QUALCOSACHEVUOITU.htm verranno passate a moto-usate.php ed il parametro regione verrà valorizzato con quello che metti al posto di QUALCOSACHEVUOITU
es:
www.miodominio,com/moto-usate-basilicata.htm
verrà passato a www.miodominio,com/moto-usate.php?regione=basilicatada notare l'estensione htm che fa apparire la pagina come statica quando in realtà è il risultato di una pagina php.
questo "rinominare" le estensioni ovviamente non è obbligatorio ma visto che hai fatto 30 fai 32 facendo le cose per bene.p.s. ricordati che devi cambiare anche tutti i link che hai nel sito
-
menomale che mi era tutto chiaro altrimenti...
grazie mille
-
Riuppo, perchè bene o male sto cercando una cosa analoga...
Allora io ho un url di tipo www.dominio.net/index.php?userid=1
E vorrei trasformarlo in www.dominio.net/user/1.htm
Se ho capito bene dovrei fare:
RewriteEngine on
RewriteRule ^/user/(.*).htm$ index.php?userid=$1giusto?
unico problema è che ho già delle regole di rewrite di wordpress...
BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
</IfModule>END WordPress
E penso che vadano a cozzare, o sbaglio?
Tantè che ho provato e non funzionava...
-
Leggendo questa discussione mi è venuta invece una domanda più incasinata.
Ammettendo di avere un URL del tipo www.miosito.it/news.php?news=$id
Come faccio a fare in modo che nel .htaccess ci sia una richiesta di informazioni al db (prendere le informazioni relative alla news associata al numero $news) e riscrivere l'url in base alle informazioni prese?
Per dirla stupida:
ho la news 10 con titolo "Prova" e sezione "Forum"
il link di ritorno dovrebbe essere quindi:
www.miosito.it/news/Forum/Prova.html
Spero di essere stato chiaro
Ho pensato a fare una cosa del tipo:
RewriteEngine On
RewriteRule ^news/([^/]+)/([^/]+)-([^/]+).html$ news.php?id=$2&sezione=$1&titolo=$3ma mi sembra bruttino anche se è il primo giorno che smanetto sul mod rewrite...
-
ho provato a settare così:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php
RewriteRule ^profilo/(.*).htm$ index.php?userid=$1
</IfModule>ma non ottengo nulla da http://www.nomesito.net/profilo/1.htm
che sbaglio?