Far comparire url predefinite al posto delle variabili!

Forum per tutti i neofiti e gli esperti che vogliono proporre o rispondere ad argomenti che riguardano lo sviluppo di apllicazioni web basate in aprticolare su Html - Css - Php - MySql, ma non solo...

Moderatore: Michele

Far comparire url predefinite al posto delle variabili!

Messaggioda Michele » gio nov 09, 2006 1:45 pm

come al solito il tutorial è preso da http://www.webmasterpoint.org
il link diretto all' articolo è:
link

è una cosa da fare a livello di sistema, ma è utile per tutti i webmaster! :P

ve lo riporto qui sotto:

Tramite il modulo MOD_REWRITE, Apache permette di modificare gli indirizzi URL a nostro piacimento, di modo da risultare funzionali al nostro sito. Infatti, siti web che usassero tecnologie PHP e MySQL spesso si trovano a dover trattare URL dinamici in cui compaiono query di selezione con variabili.

Ad esempio, molto comuni sono gli indirizzi del tipo

http://www.miosito.com/pagina.php?variabile=xx

In siti più complessi, possono essere presenti URL che trattano più variabili, quindi:

http://www.miosito.com/pagina.php?varia ... abile2=xx..

Logicamente non c'è limite al numero di variabili se non quello dettato dal programmatore stesso. Ora, questa tipologia di indirizzi risulta sicuramente complessa e articolata, tanto che comporta due notevoli svantaggi:

- E' di difficile memorizzazione da parte dell'utente
- I motori di ricerca difficilmente inseriscono tali URL nelle loro cache, soprattutto se contengono più di una variabile.

Il nostro obiettivo è quindi quello di far memorizzare all'utente e ai motori degli indirizzi più semplici del tipo www.miosito.com/sezione/pagina.html che il nostro server converta automaticamente negli indirizzi dinamici PHP contenenti le variabili.

Apache offre un metodo molto semplice ed efficace per ovviare a questo problema. Creiamo un file ".htaccess" e salviamolo nella cartella principale (ROOT) del nostro sito. NB: ".htaccess" non indica l'estensione del file, bensì il nome e l'estensione assieme. Non dobbiamo quindi assegnare un nome a piacere.

Come secondo passaggio, digitiamo nel file questo codice:

RewriteEngine on

RewriteRule ^tutorials/([^/]+).html tutorial.php?identificatore=$1 [L]



L'esempio riguarda la trasformazione dell'URL:

tutorials/xxx.html

nell'URL:

tutorial.php?identificatore=xxx

dove xxx rappresenta una sequenza di caratteri digitata dall'utente e che corrisponde al valore della variabile dell'URL complesso.

Traduciamo ora in un discorso logico il codice dell'esempio. La prima riga attiva il motore di riscrittura. La seconda dice di sostituire qualsiasi cosa simile a "tutorials/(qualsiasi carattere escluso lo slash).html" con "tutorial.php?identificatore=(caratteri digitati)".

Generalizziamo quindi l'esempio:

RewriteEngine on

RewriteRule ^qualcosa/([^/]+).estensione qualcosa.php?identificatore=$1 [L]


Logicamente ".estensione" è facoltativo, e dipende dalle nostre esigenze. Da notare "identificatore=$1" che imposta il valore della variabile alla prima sequenza di caratteri digitata dopo lo slash.

Possiamo quindi complicare la situazione aggiungendo più variabili e sequenze:

RewriteEngine on

RewriteRule ^qualcosa/([^/]+)/([^/]+).estensione qualcosa.php?identificatore=$1&identificatore2=$2 [L]

Ovviamente prima di utilizzare i moduli di Apache è bene segnalarlo al gestore del server che ospita il vostro dominio per evitare di causare eventuali danni al dominio o alla macchina.
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am

Re: Far comparire url predefinite al posto delle variabili!

Messaggioda matteo » gio nov 09, 2006 8:35 pm

http://www.miosito.com/pagina.php?variabile1=xx&variabile2=xx..

Logicamente non c'è limite al numero di variabili...

non è del tutto vero, c'è il limite di 256 caratteri nell'url, a meno di non usare il metodo POST, allorchè il resto del tutorial non ha più senso. Comunque difficilmente servono un numero altissimo di variabili e con grandi valori quando si usano per lo scopo descritto da questo tutorial, per cui andiamo avanti (era solo per precisare)

piuttosto,
RewriteEngine on

RewriteRule ^tutorials/([^/]+).html tutorial.php?identificatore=$1 [L]

potrebbe non essere sufficiente. Talvolta il webserver non ha abilitato di default il modulo MOD_REWRITE allorchè è necessario chiedere all'amministratore di sistema di abilitarlo dal file di configurazione. Questo può portare complicazioni quando si tratta di un sito che offre spazio web gratuito, che spesso disattiva molte funzioni, alcune per questioni di sicurezza, altre perchè te le offrono a pagamento.
Il MOD_REWRITE non so con quale percentuale di probabilità vi possiate trovare di trovarlo disattivato.

Apache offre un metodo molto semplice ed efficace per ovviare a questo problema. Creiamo un file ".htaccess" e salviamolo nella cartella principale (ROOT)...

Il .htaccess anche necessita di abilitazione da parte dell'amministratore di sistema. In questo caso, però, la probabilità di ritrovarvelo disabilitato è più alta.

Ovviamente prima di utilizzare i moduli di Apache è bene segnalarlo al gestore del server che ospita il vostro dominio per evitare di causare eventuali danni al dominio o alla macchina.

Appunto!
Prima di mettere in progettare un sito ottimizzato per il MOD_REWRITE assicuratevi che le due funzioni di cui sopra siano attive; se non avete modo di contattare l'amministratore, fate prima qualche esperimento.

Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Messaggioda Michele » gio nov 09, 2006 8:57 pm

behs e lo dici tu...mi fido!!!! :wink:
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am


Torna a Webmaster

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron