![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
Hey Amico Visitatore, Condividi con noi le tue idee e la tua conoscenza Aprendo una nuova discussione nella sezione Mod Rewrite e Tecniche di URL Redirect |
|
|
LinkBack (1) | Strumenti di discussione |
|
|
#1 (permalink)
|
|
|
Esperto
Data di registrazione: Jul 2006
Ubicazione: Siena
Messaggi: 1,077
|
Guida al mod_rewrite
Appena inserita su WikiGT: Guida mod_rewrite
![]() Vi riporto qui sotto il testo, postate liberamente le vostre richieste. -> Per la correzione dei (pochi ) errori potete modificare direttamente la voce sul wiki.-> Per chiarimenti sul contenuto della guida (relativo al contenuto stesso) potete rispondere direttamente in questo thread -> Per le altre richieste vi prego di aprire un nuovo thread, in modo da tenere ogni situazione separata dalle altre e tenere il forum ordinato. Grazie! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nonostante le tonnellate di esempi e documentazione, mod_rewrite è voodoo. Voodoo dannatamente figo, ma sempre voodoo. Piccola guida al mod_rewrite - contiene le informazioni base da sapere per utilizzare questo utilissimo modulo. La guida anche se orientata ad Apache è ovviamente valida (per la parte teorica) ad IIS / ISAPI rewrite.-- Brian Moore INDICE: - Prima di cominciare - Uno sguardo da vicino - mod_rewrite in pratica - Per i più bravi Stando in linea con la filosofia del forum, questa guida non è legge ma solo un contributo alla comunità (che mi auguro ricambi, segnalando errori o ampliando le sezioni). __________________________________________________ Prima di cominciare 0.0- Requisiti - conoscenza base delle espressioni regolari __________________________________________________ Uno sguardo da vicino 1.0- Cosa è il mod_rewrite mod_rewrite è un modulo per Apache, il webserver più usato nel mondo Unix. Il modulo associa "al volo" un URL virtuale (non residente sul filesystem) ad uno reale, tramite delle regole definite nei file .htaccess 1.1- Come si attiva Se sei in un hosting condiviso, non devi fare niente: il modulo è attivo di default nella maggior parte dei casi. In ogni caso prima di acquistare un piano d'hosting chiedi esplicitamente se il modulo è installato! Se lavori invece su un tuo server dedicato / VPS / localhost, molto probabilmente devi attivare il modulo a mano: - per Apache2 a2enmod rewrite come root - per Apache1 è necessario decommentare la linea LoadModule mod_rewrite nel file di configurazione Apache di default ignora i file .htaccess (e di conseguenza le tue regole!) - per farglieli leggere devi modificare la direttiva AllowOverride all'interno del file di configurazione. Ricorda di riavviare il webserver. 1.2- La prova del nove Per controllare se il modulo funziona: Livello 1) crea una pagina .php contenente Codice PHP:
Attenzione!! Caricato in memoria non vuol dire utilizzabile - infatti se il modulo è presente, ma i file .htaccess vengono ignorati (vedi sopra), le regole di riscrittura non funzioneranno! Per questo entra in gioco ilLivello 2) testare se effettivamente gli indirizzi vengono riscritti: scarica questo file e segui le istruzioni contenute nell'archivo stesso. 1.3- Struttura di un file .htaccess Riporto la struttura "base" di un file .htaccess contenente una semplice regola Codice:
RewriteEngine On RewriteRule ^index.html$ fooindex.php [L] La seconda linea specifica una regola (RewriteRule) composta da:
Deep focus:__________________________________________________ mod_rewrite in pratica 2.0- Let's check it out! Procediamo per casi analizzando alcuni URL-tipo che ognuno di noi ha incontrato almeno una volta. Sono solo degli esempi, riadattabili alle proprie esigenze. Il consiglio è di leggere in modo lineare tutti i casi, e non solo la parte finale. Lo scenario è la sezione news di un sito. Ricordate che in ogni file htaccess dovete inserire, prima delle regole, la direttiva RewriteEngine On. 2.1- Riscrittura "base" URL prima dell'intervento: www.domain.tld/news/index.php?id=1234 URL dopo l'intervento: www.domain.tld/news/notizia-1234.html Codice:
RewriteRule ^notizia-([0-9]+)\.html$ index.php?id=$1 - \.html indica ".html" (. è un metacarattere che vuol dire qualsiasi carattere, dobbiamo effettuare l'escape). - $1 viene sostituito con il valore "trovato" dalla regexp ([0-9]+) Ok, abbiamo tolto la querystring (hai detto niente!). Ma non è proprio il sistema più raffinato e la semantica è a 0. 2.2- Gestire più parametri URL prima dell'intervento: www.domain.tld/news/index.php?id=1234&cat=recensione URL dopo l'intervento: www.domain.tld/news/recensione-1234.html Codice:
RewriteRule ^(.+)-([0-9]+)\.html$ index.php?id=$2&cat=$1 Consiglio: invece di usare (.+) (qualsiasi carattere in qualsiasi quantità) è più saggio usare ([^/]+) che vuol dire "qualsiasi carattere tranne lo slash in qualsiasi quantità".2.3- Associazioni tra ID e stringhe URL prima dell'intervento: www.domain.tld/news/categoria.php?id=2 URL dopo l'intervento: www.domain.tld/news/recensioni.html Codice:
RewriteRule ^([^/]+)\.html$ index.php?nomecat=$1 Codice PHP:
2.4- Il caso ideale URL prima dell'intervento: www.domain.tld/news/index.php?id=1234 URL dopo l'intervento: www.domain.tld/news/recensioni/php6-usera-goto-1234.html Codice:
RewriteRule ^([^/]+)/([^/]+)-([0-9]+)\.html$ index.php?id=$3&cat=$1&titolo=$2 Codice PHP:
__________________________________________________ Per i più bravi 3.0- Quando qualcosa non funziona La direttiva RewriteLog permette di salvare l'output di debug di mod_rewrite su un file, ma va inserita nel file di configurazione principale di Apache, e in un hosting condiviso ciò non è possibile. Per vedere quali pezzi di url (e in che modo) vengono riconosciuti, basta usare uno script con questo semplice contenuto Codice PHP:
Codice:
RewriteRule ^(.+)-(.+)\.html$ debugger.php?id=$1&cat=$2 Quote:
![]() 3.1- Ottimizzazioni Tre consigli:
| |
|
__________________
Firefox browser Ultima modifica di osvi : 07-04-08 00:04. |
||
|
|
|
|
|
#2 (permalink) |
|
Ottimo Lavoro Osvi
![]() Mettiamo in rilievo per un pochino ![]() | |
|
__________________
Giorgio Taverniti Blog - Il mio account Twitter! Che aspetti? Diventa MODERATRICE del Forum gt !!!
|
|
|
|
|
|
|
#10 (permalink) |
|
User
|
ottima guida anche se su IIs le cose sono davvero tristi, ma tristi tristi...
in teoria funziona tutto, si installa Isapi rewrite, funziona benissimo ad ogni test e legge pure le espressioni regolari validandole... ma non cambia un url che sia uno!! Voto Apache e Linux per queste cose, su altro hosting Linux con Wordpress funzionavano tutte le combinazioni di url rewrite possibili. Mi sà che su Windows 2003 e IIs è come andare con la Ferrari sullo sterrato, non è il suo! |
|
__________________
http://www.giunti.info/gdrweb Giochi di ruolo |
|
|
|
|
|
|
#11 (permalink) |
|
Esperto
Data di registrazione: Jul 2006
Ubicazione: Siena
Messaggi: 1,077
|
grazie massimux per avermelo fatto notare :-)
ho aggiornato lo ZIP.. il 301 era già mezzo inserito (nel file funzioni.php), chissà a che pensavo.. ho messo sia quello che controlla il titolo modificato, sia quello per gli url "prima del rewrite" ciao! |
|
__________________
Firefox browser |
|
|
|
|
|
|
#14 (permalink) |
|
User
|
Salve a tutti,
ottima la guida, per il mio nuovo sito ho creato il file htacces..il redirect funziona nel senso però che mi ridireziona tutto all'home page..ad esempio RewriteRule ^index.php?option=com_content&task=view&id=55&Item id=80$ azienda.php [L,R=301] può andare bene un record scritto così? Grazie a tutti comunque |
|
|
|
|
|
#15 (permalink) |
|
User
Data di registrazione: Feb 2006
Messaggi: 92
|
|
|
__________________
http://www.locali-italiani.it |
|
|
|
|
| Tags: guide, howto, mod_rewrite, tutorial |
| Strumenti di discussione | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.giorgiotave.it/forum/mod-rewrite-e-tecniche-di-url-redirect/46579-guida-al-mod_rewrite.html
|
||||
| Scritto da | For | Type | Data | |
| » URL Rewriting: prima o poi capiterai anche tu! - SEO Blog GT | This thread | Pingback | 10-08-07 11:06 | |
