*Tratto da un intervento di Xdesign sul forum Html
N.B.: su alcuni server lo script potrebbe non funzionare per via di alcune impostazioni dello spazio stesso.
Supponiamo di gestire un sito suddiviso in molte sezioni indipendenti tra loro: le pagine per i download; il forum; la chat; la mailing list. Nella migliore delle ipotesi, se abbiamo creato una cartella per ogni servizio, avremo degli indirizzi del tipo:
http://www.mio_sito.it/servizi/forum/index.htmhttp://www.mio_sito.it/servizi/mailinglist/index.htm
http://www.mio_sito.it/servizi/chat/index.htm
Senza dubbio un lavoro ordinato e coerente ma non proprio semplice da ricordare né veloce da digitare. In queste situazioni, solitamente, è buona regola creare dei domini di terzo livello per favorire gli utenti.
Un dominio di terzo livello (o sottodominio) non è altro che un indirizzo "fittizio" che rimanda automaticamente all' URL originale ma, rispetto a quest'ultimo, è più breve e facile da tenere a mente.
I "terzo livello" sono strutturati in questa maniera:
http://parola.mio_sito.it
Quindi, se volessimo creare un sottodominio per il nostro forum, avremmo (anzichè http://www.mio_sito.it/servizi/forum/index.htm http://forum.mio_sito.it
Un metodo sicuramente comodo, soprattutto se gli URL di origine sono molto lunghi. L'altra faccia della medaglia è rappresentata dal fatto che non tutti gli Hoster danno la possibilità di creare dei sottodomini e comunque, anche se fosse consentito, generalmente si tratta di un servizio da attivare a pagamento.
Tuttavia c'è una soluzione gratuita e funzionale realizzabile con javascript. Si tratta pur sempre di un espediente per sostituire un vero dominio di terzo livello ma il risultato è molto originale.
Prima di analizzare il codice è necessaria una breve premessa.
Girovagando per la rete avrete probabilmente notato la presenza del simbolo "@
Per quanto ci riguarda, anche se non abbiamo registrato alcun "terzo livello" con tale simbolo, potremmo comunque usare la chiocciola in un nostro indirizzo... ma tutto ciò che la precede non verrebbe interpretato dal browser.
Penso che un esempio chiarificatore valga più di ogni altra spiegazione.
Html.it non ha mai registrato alcun sottodominio del tipo nome@html.it
http://prova@html.it
http://saibal@html.it
http://freephp@html.it
Cosa notate di particolare?
Esatto! Tutti e tre i collegamenti conducono sempre alla homepage di html.it. Da ciò possiamo facilmente dedurre che le parole antecedenti la @ http://html.it
Detto questo vi starete chiedendo come poter utilizzare in modo proficuo questa soluzione. È presto detto.
Riprendiamo in considerazione i lunghissimi URL di prima e supponiamo di voler raggiungere http://www.mio_sito.it/servizi/forum/index.htm http://forum@mio_sito.it
L'operazione è semplicissima e richiede poco tempo. Costruiamo una pagina con questo codice:
<script language="Javascript">
<!--
/* copyright 2001 admin@xdesign.it */
var indirizzo = window.location;
if (indirizzo == 'http://www.mio_sito.it/') {
location.href = "http://www.mio_sito.it/index2.htm";
}
if (indirizzo == 'http://forum@mio_sito.it') {
location.href = "http://www.mio_sito.it/servizi/forum/index.htm";
}
-->
</script>
La pagina va salvata come index http://www.mio_sito.it
Ma che cosa fa il codice di particolare? Semplice: è un redirect che interpreta l'URL scritto nella barra del browser e si comporta di conseguenza. Aggiungo anche che sono infiniti i redirect da poter inserire; basterà duplicare la sintassi dei costrutti if
Proviamo, ancora una volta in barba ai puristi del javascript, a "leggere in italiano" il codice. Prima però ricordiamoci che qualunque sia l'indirizzo digitato, verremo sempre reindirizzati al dominio scritto dopo la chiocciola (per questo motivo bisogna mettere il codice nella root principale; è lì che verremo reindirizzati ed è da lì che partirà il redirect).
Leggiamo:
"Se nella barra del browser è stato digitato http://forum@mio_sito.it http://www.mio_sito.it/servizi/forum/index.htm
Sintassi semplice e chiara no?
Come avrete notato ho aggiunto anche un secondo costrutto if http://www.mio_sito.it if di controllo index2.htm index.htm
I più smaliziati potrebbero obiettare che si potrebbe mettere il codice direttamente nella index attualmente on line, senza doverne creare una nuova; considerazione giustissima ma con un piccolo problema: appesantendo la pagina con il codice rallentiamo leggermente anche il redirect dato che il browser ci mette più a tempo a "leggere" il codice; ecco perchè consiglio di creare una nuova index.htm
Prima di concludere analizziamo la compatibilità e i difetti di questo codice.
Con i browser più diffusi (Explorer, Netscape 4.x e NN6) non ci sono problemi; solo con Opera viene mostrata una finestra di alert ad indicare che sta per partire un redirect.
Quanto ai difetti... bhe uno su tutti: la possibilità che il codice non venga eseguito lasciando l'utente davanti una desolata pagina vuota. Come sappiamo, infatti, javascript lavora lato client (cioè viene interpretato sul browser del navigatore); questo fatto permette al singolo utente, in teoria, di disabilitare l'esecuzione di Javascript anche momentaneamente.
Personalmente la ritengo una possibilità remota dato che ormai la navigazione sarebbe impensabile senza l'utilizzo di questo linguaggio... sappiate comunque che potrebbe accadere. Resta il fatto che si può rimediare velocemente anche a questo problema: basta inserire un link testuale nella index