Sin dagli albori del World Wide Web (ab­bre­via­to in web) Internet fornisce ai propri utenti un modo univoco che permette di iden­ti­fi­ca­re le risorse in rete: l’URL, standard del documento RFC dal 1994, mette a di­spo­si­zio­ne degli utenti una sintassi di validità uni­ver­sa­le con cui localizza contenuti pubblici, con­sul­ta­bi­li in qualsiasi momento a seconda delle proprie necessità. Così l’URL rientra tra le tec­no­lo­gie di base del web. Gli utenti uti­liz­za­no gli URL gior­nal­men­te per ri­chia­ma­re le risorse dal browser, ma questo standard non si limita solo all’iden­ti­fi­ca­zio­ne di pagine web.

Vi pre­sen­tia­mo la struttura di base di ogni URL e ap­pro­fon­dia­mo i prin­ci­pa­li campi di ap­pli­ca­zio­ne.

Che cos’è un URL?

L’ab­bre­via­zio­ne URL sta per “Uniform Resource Locator“, in italiano “lo­ca­liz­za­to­re di risorse unitario”. Si tratta di una sot­to­ca­te­go­ria del co­sid­det­to “Uniform Resource Iden­ti­fier” (ab­bre­via­to in URI, in italiano “iden­ti­fi­ca­to­re di risorse unitario“). La struttura di un URL cor­ri­spon­de alla sintassi dell’URI.

Gli iden­ti­fi­ca­to­ri con­sen­to­no di rin­trac­cia­re le risorse su Internet basandosi su un con­tras­se­gno univoco, a livello locale ma anche mondiale. In qualità di sot­to­ca­te­go­ria di “Iden­ti­fier” gli URL vengono uti­liz­za­ti come sinonimo di “indirizzo Internet”, fatto im­pu­ta­bi­le al prin­ci­pa­le campo di ap­pli­ca­zio­ne dell’URL: l’iden­ti­fi­ca­zio­ne delle pagine web. Tuttavia gli URL non si limitano solo a questo, infatti grazie a loro si possono lo­ca­liz­za­re, ad esempio, anche file nel file system locale. Vale perciò la regola che ogni indirizzo Internet è un URL, ma non ogni URL è un indirizzo Internet.

De­fi­ni­zio­ne

L’ab­bre­via­zio­ne URL sta per “Uniform Resource Locator“. Gli URL con­sen­to­no di iden­ti­fi­ca­re uni­vo­ca­men­te le risorse e di aprirle quando ne­ces­sa­rio. Ad esempio gli utenti uti­liz­za­no gli URL nel browser per ri­chia­ma­re le pagine web dalla barra degli indirizzi o scaricare i file.

Struttura dell’URL

Ogni URL è composto da più com­po­nen­ti suddivise per comodità in due sot­toin­sie­mi: il co­sid­det­to schema (o pro­to­col­lo) e una sezione relativa a tale schema.

  • Schema: lo schema dell’URL indica sia il tipo di risorse sia il metodo di accesso e comprende tutte le in­for­ma­zio­ni riguardo alle modalità di accesso alle risorse. Spesso lo schema dell’URL prende lo stesso nome del pro­to­col­lo cor­ri­spon­den­te del metodo di accesso sul livello di ap­pli­ca­zio­ne. Gli schemi comuni sono http/https, mailto, file o ftp.
  • Parte che specifica lo schema: a seconda del tipo di schema la parte che specifica lo schema dell’URL comprende una serie di segmenti che con­ten­go­no la posizione della ri­spet­ti­va risorsa e i parametri di ela­bo­ra­zio­ne opzionali.

I due punti svolgono la funzione di se­pa­ra­to­re tra gli schemi e la parte che specifica lo schema. Inoltre a seconda dello schema possono essere ne­ces­sa­rie due barre oblique, che risalgono a una con­ven­zio­ne degli inizi del web e che oggi non hanno più una specifica funzione.

Alla base dell’URL si trova la seguente sintassi dell’URI:

Scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]

A ogni segmento della parte che specifica lo schema viene assegnata una precisa funzione. Le sezioni user, password, host e port vengono chiamate anche “Authority“ (autorità). L’Authority indica su quale computer si trova una risorsa e a quale namespace vada at­tri­bui­ta.

  • user e password: le sezioni user e password com­pren­do­no il nome utente e la password di un utente au­to­riz­za­to all’accesso di una risorsa e vengono separati tra di loro da due punti. Entrambi i campi sono ob­bli­ga­to­ri nel caso in cui la risorsa richieda un’au­ten­ti­fi­ca­zio­ne. Il nome utente e la password vengono separati con un simbolo @ dal segmento URI host.
  • host: il segmento URI host comprende di solito un dominio ,inclusi i domini di primo, secondo e terzo livello, e indica così un preciso computer (host) dal quale deve essere ri­chia­ma­ta la risorsa scelta. In al­ter­na­ti­va è possibile segnalare il nome del computer sotto forma di un indirizzo IP.
  • port: con l’in­di­ca­zio­ne di un numero di porta è possibile gestire una precisa porta TCP/IP nella rete. Tuttavia la sua se­gna­la­zio­ne rimane opzionale, visto che la maggior parte degli schemi di­spon­go­no già di una porta di default. Le porte standard sono ad esempio la 80 per il pro­to­col­lo HTTP, 443 per quello HTTPS o 21 per FTP. Un numero di porta va inserito solo quando non è definita nessuna porta generale o non deve essere uti­liz­za­ta una porta standard per la tra­smis­sio­ne. Il numero di porta viene separato con due punti dalla sezione host.

Di solito il dominio nell’Authority viene indicato in forma leggibile da utenti umani, mentre i computer lavorano con gli indirizzi IP. L’apertura di una risorsa web richiede perciò prima un passaggio in­ter­me­dio che si svolge in back­ground senza che l’utente se ne accorga: la ri­so­lu­zio­ne dei nomi sulla base del Domain Name System (DNS).

N.B.

DNS descrive un servizio nelle reti basate su IP che consiste nella ri­so­lu­zio­ne dei nomi di dominio negli indirizzi IP o negli IP in domini. I servizi Internet mettono a di­spo­si­zio­ne i co­sid­det­ti server DNS. Se un utente apre una pagina, il router inoltra la richiesta prima al server DNS com­pe­ten­te che individua l’indirizzo IP giusto per il dominio ricercato e lo rimanda indietro. Una volta che l’indirizzo IP ricercato è giunto al router, ci si può in­di­riz­za­re al web server cor­ri­spon­den­te.

All’Authority dell’URI segue l’in­di­ca­zio­ne di dove si trovi la risorsa sul computer, oltre che i com­po­nen­ti opzionali query string e l’in­di­ca­zio­ne del fragment.

  • path: il segmento URI path comprende il percorso per arrivare alla risorsa e rimanda così alla posizione di me­mo­riz­za­zio­ne sul computer di de­sti­na­zio­ne. Il percorso comincia sempre con uno slash (/).
  • query: alcune risorse web com­pren­do­no dei com­po­nen­ti ese­gui­bi­li e ri­chie­do­no oltre al percorso file una co­sid­det­ta query string (chiamata anche stringa di ricerca). Questa comprende i parametri (ad esempio gli input utente) che vengono forniti insieme all’URL ed elaborati lato server. È comune nelle pagine web dinamiche che vengono create solo al momento dell’apertura dei record da un database. La query string viene sempre in­tro­dot­ta da un punto in­ter­ro­ga­ti­vo (?).
  • fragment: se si deve fare ri­fe­ri­men­to a un punto preciso in una risorsa, l’URI termina con l’in­di­ca­zio­ne di un fragment, che viene incluso se­pa­ra­ta­men­te con un hashtag (#) e rimanda di solito a un anchor de­no­mi­na­to con un ID univoco in un documento HTML, ad esempio a un titolo di un sot­to­pa­ra­gra­fo.
  • In base allo schema uti­liz­za­to si sta­bi­li­sce quali elementi della sintassi dell’URI sono contenuti in un URL. La struttura dell’URL viene così de­ter­mi­na­ta dal tipo di risorsa. La seguente lista comprende i tipi di URL più comuni:

    http

    Le pagine web vengono ri­chia­ma­te tramite i pro­to­col­li HTTP (Hypertext Transfer Protocol) o HTTPS (Hypertext Transfer Protocol over SSL). Nell’ultimo caso i dati vengono trasmessi tramite una con­nes­sio­ne sicura. La struttura dell’URL è uguale per entrambi i pro­to­col­li.

    Schema Se­pa­ra­to­re Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema
        Nome utente Password Host (dominio) Porta Percorso Query Fragment
    http :// So­li­ta­men­te si tralascia So­li­ta­men­te si tralascia www.example.org :8080 /index.html ?id=1254 #55652

    Ri­chia­man­do un URL non è di solito ne­ces­sa­ria nessuna au­ten­ti­fi­ca­zio­ne. L’Authority comprende perciò solamente il dominio tramite il quale il sito de­si­de­ra­to può essere ri­chia­ma­to. Si tra­la­scia­no il nome utente e la password.

    mailto

    mailto è uno schema URL per gli indirizzi e-mail che consente ai gestori delle pagine web di im­ple­men­ta­re degli hyperlink per essere con­tat­ta­ti. Se un utente clicca sul col­le­ga­men­to mailto, tutti i browser in uso aprono au­to­ma­ti­ca­men­te il programma standard di posta elet­tro­ni­ca del sistema e una nuova finestra per l’e-mail. Così l’indirizzo e-mail che è stato indicato nella parte che specifica lo schema viene inserito nella finestra come indirizzo del de­sti­na­ta­rio. All’utente viene così ri­spar­mia­to di avviare il programma da solo e di tra­smet­te­re l’indirizzo e-mail ma­nual­men­te.

    Schema Se­pa­ra­to­re Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema
        Nome utente Se­pa­ra­to­re Host (dominio)
    mailto : john.doe @ example.org

    Negli URL con lo schema mailto viene pre­sen­ta­to nella parte che specifica lo schema solo l’indirizzo e-mail del de­sti­na­ta­rio. Lo schema e la parte che specifica lo schema vengono separati dagli URL mailto solo con due punti. Si tralascia il doppio slash. Tramite una query string si può impostare l’header dell’e-mail per tra­smet­te­re, ad esempio, il valore pre­de­fi­ni­to per l’oggetto e il testo dell’e-mail.

    file

    Per ri­chia­ma­re degli specifici file sul proprio computer serve lo schema file. Se si inserisce il percorso corretto come URL nella barra degli indirizzi di un browser, vengono ri­chia­ma­ti la cartella o il file di de­sti­na­zio­ne de­si­de­ra­ti.

    Schema Se­pa­ra­to­re Parte che specifica lo schema
        Percorso
    file :// /C:/cartella/sot­to­car­tel­la/file.txt

    Visto che lo schema file rimanda a una risorsa locale, si tralascia l’in­di­ca­zio­ne dell’Authority. Il percorso del file comincia sempre con uno slash. Ne risultano così un URL con tre barre oblique di seguito.

    ftp

    Gli URL con lo schema FTP (File Transfer Protocol) con­sen­to­no l’accesso ai file che si trovano su un altro computer (accesso remoto). Per la tra­smis­sio­ne viene uti­liz­za­to l’omonimo pro­to­col­lo di tra­smis­sio­ne dati FTP.

    Schema Se­pa­ra­to­re Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema Parte che specifica lo schema
        Nome utente Password Se­pa­ra­to­re Host (dominio) Porta Percorso
    ftp :// john :quertz123 @ www.example.org :21 /index.html

    Un utente che vuole accedere tramite FTP ai file presenti su un file system remoto si deve di solito au­ten­ti­fi­ca­re. Gli URL, che fanno ri­fe­ri­men­to alle risorse FTP, com­pren­do­no perciò perlopiù i dati di accesso (nome utente e password).

    Caratteri con­sen­ti­ti in un URL

    Lo standard URL supporta solo un set di caratteri limitati ap­par­te­nen­ti a una selezione di caratteri ASCII (American Code for In­for­ma­tion In­ter­chan­ge). Inoltre bisogna con­si­de­ra­re il fatto che numerosi caratteri sono già destinati a funzioni precise, per cui indicano, ad esempio, singoli segmenti che com­por­ta­no la scom­po­si­zio­ne o la modifica dell’URL.

    Ai seguenti caratteri è stata assegnata una funzione definita nello standard URL:

    : / ? # [ ] @ $ & ' ( ) * + , ; =

    Ad esempio il punto in­ter­ro­ga­ti­vo (?) introduce una query string, mentre diversi parametri nella query string vengono de­li­mi­ta­ti con il simbolo della e com­mer­cia­le (&). Per separare i nomi dei parametri e dei valori viene uti­liz­za­to il simbolo dell’uguale (=). L’hashtag (#) introduce l’anchor.

    Tra i caratteri senza funzione pre­de­fi­ni­ta rientrano tutte le lettere e le cifre, così come i seguenti caratteri speciali:

    A-Z, a-z
    0-9
    - . _ ~

    I caratteri ASCII non elencati in questa sede e tutti gli altri caratteri non-ASCII non possono essere uti­liz­za­ti negli URL e devono essere riscritti. Allo stesso modo è possibile ri­scri­ve­re uno dei caratteri prenotati per evitare che vengano in­ter­pre­ta­ti in base al loro si­gni­fi­ca­to pre­de­fi­ni­to. Per la ri­scrit­tu­ra dei caratteri ASCII lo standard URL utilizza il segno di ma­sche­ra­men­to % (per­cen­tua­le) così come la tabella dei valori ASCII nell’an­no­ta­zio­ne esa­de­ci­ma­le. Anche i caratteri non-ASCII vengono riscritti ser­ven­do­si della rap­pre­sen­ta­zio­ne in per­cen­tua­le. L’RFC 3986 consiglia una codifica com­pa­ti­bi­le con l’ASCII sulla base di UTF-8, anche se non risulta ob­bli­ga­to­ria, in quanto è il fornitore del ri­spet­ti­vo servizio a decidere quale codifica venga uti­liz­za­ta. Un carattere speciale come ü può ad esempio venire rap­pre­sen­ta­to come %FC (Latin-1) o %C3%BC (UTF-8). Invece i caratteri speciali nel dominio vengono tra­sfor­ma­ti in catene di caratteri com­pa­ti­bi­li con l’ASCII uti­liz­zan­do il punycode. Trovate maggiori in­for­ma­zio­ni sulla codifica tramite punycode nel nostro articolo sui nomi di dominio in­ter­na­zio­na­li.

    Consiglio

    Sul sito del con­su­len­te di web design Eric A. Meyer viene ad esempio messo a di­spo­si­zio­ne un co­di­fi­ca­to­re di URL gratuito.

    La dif­fe­ren­za tra URL assoluti e relativi

    Gli URL vengono uti­liz­za­ti come URL assoluti o relativi. Gli URL assoluti sono uni­ver­sal­men­te validi e com­pren­do­no tutti i segmenti necessari per lo schema di ri­fe­ri­men­to. Gli URL relativi, invece, sono validi solo in un preciso contesto ed ereditano da questo delle proprietà spe­ci­fi­che, di modo che quelle parti spe­ci­fi­che di un URL diventino ri­don­dan­ti e possano essere tra­la­scia­te. Tra le in­for­ma­zio­ni che possono risultare dal contesto rientrano ad esempio il pro­to­col­lo, i domini o anche il percorso per arrivare alla risorsa.

    Gli URL relativi vengono uti­liz­za­ti anche nei col­le­ga­men­ti iper­te­stua­li sulle pagine web per collegare diverse sot­to­pa­gi­ne di un sito. L’URL del link eredita l’in­di­ca­zio­ne dei dati dalla pagina web su cui viene usato.

    I seguenti esempi indicano un link da www.example.org/index/pagina1 a www.example.org/index/pagina2 con URL assoluto o relativo.

    Col­le­ga­men­to iper­te­stua­le con URL assoluto:

    <a href="http://www.example.org/index/pagina2">Testo del link</a>

    Col­le­ga­men­to iper­te­stua­le con URL relativo:

    <a href="/index/pagina2">Testo del link</a>

    Gli URL relativi hanno il vantaggio di essere net­ta­men­te più corti e con­tri­bui­sco­no a creare un codice sorgente agevole e chiaro. Inoltre i col­le­ga­men­ti iper­te­stua­li fa­ci­li­ta­no con gli URL relativi il tra­sfe­ri­men­to del dominio. Se si modifica il dominio del sito, è ne­ces­sa­rio so­sti­tuir­lo ma­nual­men­te in tutti i link interni con URL assoluto o rein­di­riz­zar­lo. Ci si risparmia questo lavoro nel caso degli URL relativi che si pre­sen­ta­no senza Authority e quindi senza in­di­ca­zio­ne del dominio.

    Vai al menu prin­ci­pa­le