*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.htm
http://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), un semplice: 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 "@" (chiocciola) in alcuni URL. In questo caso è stato registrato un reale sottodominio con all'interno il carattere chiocciola.
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. Provate però a cliccare sui seguenti link:
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 @ vengono ignorate come URL e il browser fa riferimento solamente a quello che è scritto dopo la chiocciola; in pratica è come se avessimo sempre scritto 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 con 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 e va messa nella root principale del sito. In pratica deve essere il primo documento raggiungibile se digitiamo 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 (dopo essere stati rimandati alla index nella root principale) reindirizza l'utente verso http://www.mio_sito.it/servizi/forum/index.htm".
Sintassi semplice e chiara no?
Come avrete notato ho aggiunto anche un secondo costrutto if nel codice per evitare uno spiacevole problema; d'ora in poi, infatti, la nostra index sarà quella con lo script analizzato e quindi, se un utente digitasse http://www.mio_sito.it, non partirebbe il redirect; per ovviare all'inconveniente è bastato inserire un if di controllo che reindirizzi alla reale pagina di entrata (index2.htm) se viene richiamata la 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 completamente bianca e con all'interno solamente il titolo, le eventuali keywords e il codice javascript in questione.
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 che permetta di accedere manualmente al sito in caso di "blocco"; con questo accorgimento (che non appesantisce assolutamente la pagina) non si rischia di lasciare un visitatore a bocca asciutta.