Le World Wide Web est un réseau de ressources informationnelles multimédia. Le Web s'appuie sur trois mécanismes qui rendent ces ressources accessibles à l'audience la plus large possible :
Une URL consiste typiquement en trois parties :
Considérez l'URL qui désigne le document HTML original sur lequel se base cette spécification :
http://www.w3.org/TR/WD-html4/cover.html
Cette URL peut être lue ainsi : Utiliser le HTTP protocole pour transférer les données résidant sur la machine www.w3.org dans le fichier /TR/WD-html4/cover.html.
Les URL sont en général sensibles à la casse (à l'exception de la partie décrivant le nom de machine). Des URL, ou parties d'URL, peuvent être à casse non significative, mais cette propriété est quasiment impossible à détecter à priori. Les utilisateurs devront donc en général toujours agir comme si les URL étaient à casse significative.
Le jeu de caractères utilisé pour encoder les URL apparaissant dans les documents HTML est spécifié dans le document [RFC1738].
La spécification des URL en vigeur (NdT : en français dans le texte) au moment où ce document est écrit ([RFC1738]) offre un mécanisme pour pointer une ressource, mais pas un endroit précis dans une ressource. La communauté du Web a adopté une convention appelée "URL de fragment" pour "pointer" une ancre placée à l'intérieur d'un document HTML. Une URL de fragment se termine par un "#" suivi de l'identificateur d'une ancre. Par exemple, voici une URL pointant une ancre nommée section_2 :
http://somesite.com/html/top.html#section_2
Une URL relative (définie dans le document [RFC1808]) ne contient aucune information de protocole ni de machine, et le chemin d'accès se référe en général à un document HTML situé sur la même machine que le document courant. Des URL relatives peuvent contenir un chemin d'accès relatif contenant des schémas ".." (".." signifie le père de la position atteinte jusque là) et peut être une URL de fragment.
Des URL relatives peuvent être résolues pour redonner des URL absolues, par exemple lorsque l'utilisateur essaie de suivre un lien partant d'un document vers un autre. Le document [RFC1808] définit l'algorithme normalisé pour la résolution des URL relatives. La description suivante n'est citée que par commodité.
En bref, une URL complète (Ndt. dite aussi "entièrement spécifiée") est obtenue à partir d'une URL relative en attachant une partie, une "base", à l'URL relative. La "base" est une URL qui peut provenir de n'importe laquelle des sources suivantes :
Le document [RFC1808] préconise la priorité des sources d'information de "base" à considérer. Pourles besoins de cette explication, la dernière source (explicite) de "base" l'emporte sur toutes les autres, les en-têtes HTTP étant considérées être arrivées avant la section HEAD du document.
Si aucune "base" explicite n'accompagne le document, l'URL de base est celle qui pointe sur le répertoire du document courant.
A partir d'une URL de "base" et une URL relative, (qui ne commence pas par un slash), une URL absolue peut être construite ainsi :
En HTML, les URL jouent un rôle dans les situations suivantes :
Dans chacun de ces cas, les auteurs utiliseront de préférence des URL absolues, des URL de fragment, ou des URL relatives. Consultez la section traitant des ancres pour plus d'informations sur les rapports entre liens et URL.
En plus des URL HTTP, les auteurs sont autorisés à utiliser des URL de type MAILTO (voir [RFC1738]) dans leurs documents. Les URL de type MAILTO provoquient l'émission d'un courrier électronique vers une adresse donnée. Par exemple, un auteur souhaitera créer un lien qui, une fois activé, va demander à l'agent utilisateur d'activer un programme de courrier dont le champ "To:" est l'adresse de destination.
Les URL de type MAILTO ont la syntaxe suivante :
mailto:adresse-email
Les agents utilisateurs pourront supporter des extensions d'URL MAILTO qui ne sont pas encore reconnus comme standards d'Internet (ex., ajoutant une information d'objet du message à une URL grâce à un complément de syntaxe du type "?Subject=my%20subject" dans lequel tous les espaces doivent être écrits "URL encodés" (remplacés par la chaîne "%20").