In questo articolo esamineremo insieme l'aspetto di un URL, ovvero di quello che più comunemente è chiamato indirizzo web.
Come avrete capito dall'introduzione, questo articolo è decisamente più didattico nonché tecnico rispetto alla normalità delle pubblicazioni qui, nell'area webmarketing di HTML.it. Il motivo, fondamentalmente, è che sono molto pignolo nell'utilizzare termini corretti al momento corretto soprattutto quando ci si rivolge a qualcuno del nostro stesso campo o quando l'obiettivo è la formazione. Utilizzare un termine al posto dell'altro, ad esempio posizionamento al posto di ottimizzazione, non solo è tecnicamente non corretto ma può portare a gravi incomprensioni se il vostro interlocutore applica alla lettera quanto da voi espresso.
Dunque, per la rubrica "uso corretto dei termini tecnici", prendendo spunto dal post di Matt Cutts l'articolo di oggi illustra la composizione di un URL scomposto nelle varie parti.
URL di esempio
Per il nostro obiettivo di oggi, ovvero comprendere gli elementi che compongono un URL (o una URL che dir si voglia), utilizzeremo a modello un indirizzo reale, raggiungibile via web e corrispondente alla pagina dei risultati di una ricerca su Yahoo! (è per la par condicio, si parla sempre di Google...).
http://search.yahoo.com:80/search?p=weppos&ei=UTF-8&fr=moz2#yschtools
Elementi che compongono un URL
Schema o Protocollo
Il termine più corretto per identificare la prima parte dell'URL, nel nostro caso http://
, è scheme, in italiano schema.
Più comunemente questa parte è chiamata protocollo poichè spesso identifica proprio il protocollo grazie al quale ci si connette ad una risorsa web. Ad esempio http://
e https://
identificano il protocollo HTTP (nel secondo caso via connessione cifrata) mentre lo schema ftp://
identifica il protocollo FTP.
In realtà non è sempre così. Se usate spesso i feed vi sarà senz'altro capitato di incontrare un URL del tipo feed://
come ad esempio feed://rss.html.it/articoli.xml (questo indirizzo è reale). Lo schema feed://, così come altri schemi, identifica particolari tipi di documenti, in questo caso un feed, e consente al sistema operativo di eseguire determinate azioni o lanciare determinati programmi quando si seleziona il collegamento da una pagina web.
feed://
non è un protocollo, bensì uno schema.
Username e Password
Non tutti sanno che è possibile inserire all'interno di un URL anche uno username ed una password per autenticare direttamente una richiesta ad un webserver.
Nell'URL di esempio questi dati non sono presenti poichè non necessari. Il seguente, è un esempio (fittizio) di un URL contenente username (myusername) e password (mypassword).
http://myusername:mypassword@www.example.com/
In questo caso, quando tentiamo di accedere all'URL www.example.com, con il browser (o altro client), il webserver tenterà di autenticarci con utente myusername e password mypassword. Se la richiesta va a buon fine, viene stabilita una sessione di navigazione associata all'utente "myusername".
Perché questo non è necessario, ad esempio per eseguire una query su Google? La spiegazione tecnica completa esula dall'obiettivo di questo articolo. Basti per ora sapere che normalmente le pagine web sono configurate in modo tale da essere accessibili "in modo anonimo", senza cioè necessità di autenticazione con uno specifico account sul server.
Questa tecnica è tendenzialmente pericolosa poichè espone in chiaro, attraverso il protocollo in uso, il vostro nome utente e la vostra password che possono essere intercettate.
È tuttavia una soluzione utile per accedere, ad esempio, al vostro spazio FTP in modo diretto digitando l'URL:
ftp://vostrausername:vostrapassword@www.ilvostrohostftp.com/percorsoftp
Host o Hostname
Entriamo ora nel cuore dell'articolo. Nel nostro esempio, l'host dell'URL corrisponde a search.yahoo.com
. Host ed hostname sono quasi la stessa cosa, ad eccezione di quanto avviene in alcuni linguaggi come JavaScript che nell'host includono anche il numero della porta (vedi sezione successiva).
L'host è comunemente chiamato dominio o sito, nonostante non sia tecnicamente corretto.
Il dominio, nel nostro caso, infatti è yahoo.com
, anche definito come dominio di secondo livello. Il nome a dominio è quello che normalmente può essere registrato affidandosi ad un servizio di hosting.
Tornando al nostro url search.yahoo.com
, search
è il dominio di terzo livello mentre .com
è il dominio di primo livello, ovvero top level domain (TLD).
Ricapitolando, dato l'indirizzo search.yahoo.com
Elemento | Esempio |
---|---|
dominio | yahoo.com |
top level domain (TLD) | .com |
dominio di terzo livello (o sottodominio) | search |
E cosa dire di it.search.yahoo.com
o www.yahoo.com
?
In entrambi i casi vale il discorso sopra esposto, dunque it.search
è il sottodominio così come www
.
Nota. Ebbene sì, www.
è un terzo livello anche se è convenzione che corrisponda nei contenuti al dominio di secondo livello.
Porta
Tornando al nostro esempio iniziale, :80
corrisponde alla porta verso la quale è indirizzata la richiesta.
80 è la porta predefinita per le richieste http così come 443 quella per le richieste https. Se omessa dall'url, il webserver riceverà le richieste su una di queste due porte standard a seconda dello schema utilizzato.
Per maggiori informazioni sulle porte assegnate ai vari protocolli potete consultare il documento gestito dall'Internet Assigned Numbers Authority.
Percorso
Con il termine percorso, meglio definito in inglese come path, si intende la parte che comprende cartelle e nome file in un URL.
Nel nostro caso si tratta di /search
, che non include una reale distinzione tra cartelle e file. Nel caso ad esempio dell'URL https://www.html.it/info/chi-siamo.php
il percorso corrisponde a /info/chi-siamo.php
.
Notare che il percorso include lo / iniziale (poichè l'host non lo comprende).
Esercizio a casa: nell'URL https://www.html.it/
qual'è? il percorso? (non sbirciare la soluzione...)
La risposta più avanti.
In un percorso può essere presente un numero indefinito di cartelle (esempio info/
) ed un solo nome di un file (esempio chi-siamo.php
).
Tecnicamente il percorso /
corrisponde ad una cartella, chiamata root. La root è la cartella predefinita del sito, la cartella principale, quella di livello più alto.
Ed ecco la soluzione ai compiti a casa.
La risposta è /
, tuttavia è da tenere presente che quando non è definito un nome di un file, spesso significa che ne esiste uno configurato per essere la default index, ovvero la pagina da richiamare in questi casi.
Per php spesso si usa index.php
, ad esempio https://www.html.it/index.php
e https://www.html.it/
corrispondono ad una richiesta allo stesso file.
Nel prima caso, tuttavia, il percorso è /index.php
.
Query
Tutta la porzione che segue il carattere ?
dopo il path, se esiste, si chiama query.
Spesso la troverete definita anche come querystring, più raramente come search.
Il carattere punto interrogativo ?
normalmente è parte della query stessa poichè ne identifica l'inizio.
La query può contenere valori a coppia, nel formato key=value
. Ciascuna coppia è separata dalle altre da un carattere &
, anche se le specifiche W3C vorrebbero l'uso della sua versione codificata ovvero &
.
Nel nostro esempio, p=weppos&ei=UTF-8&fr=moz2
, abbiamo 3 coppie di valori:
- p=weppos
- ei=UTF-82
- fr=moz2
Le chiavi, definite anche parametri, sono rispettivamente p
, ei
e fr
mentre i valori sono weppos
, UTF-82
e moz2
.
Ancora
Arriviamo infine all'ultima parte di un URL, normalmente poco presente.
La parte che segue il segno cancelletto #
si chiama in inglese fragment ma alcune volte la troverete con il termine di anchor, in italiano àncora.
Normalmente identifica una corrispondenza ad un attributo id
o name
all'interno della pagina.
Ad esempio, se aprite il sorgente del nostro solito URL di esempio noterete la presenza di un attributo id="yschtools"
. L'inserimento di questo valore nell'URL consente all'utente di aprire la pagina spostandosi in automatico all'altezza dell'elemento scelto.
Un uso esemplare delle ancore è quello di Wikipedia.
Notate come l'indice adotti le ancore per agevolare la navigazione dell'utente nella pagina.
Tabella riassuntiva
Dopo questo concentrato di informazioni, credo sia giunto il momento di un riepilogo generale. La seguente tabella ha lo scopo di riassumere quanto detto nelle pagine precedenti, tenendo presente il nostro esempio iniziale arricchito di username e password fittizi:
http://myusername:mypassword@search.yahoo.com:80/search?p=weppos&ei=UTF-8&fr=moz2#yschtools
Elemento | Esempio |
---|---|
Schema | http:// |
Username | myusername |
Password | mypassword |
Host | search.yahoo.com |
Dominio | yahoo.com |
TLD | .com |
Sottodominio | search |
Porta | 80 |
Percorso | /search |
Query | ?p=weppos&ei=UTF-8&fr=moz2 |
Ancora | #yschtools |