# Uniform Resource Locator

Een Uniform Resource Locator (afgekort URL) is een gestructureerde naam die verwijst naar gegevens. Voorbeelden zijn het unieke adres waarmee de locatie van een webpagina op internet wordt aangegeven of een e-mailadres. In de naam is alle informatie opgenomen over de benodigde techniek om de betreffende gegevens te bereiken. De URL is een bijzondere vorm van de URI.

## Opbouw

URL's zijn opgebouwd uit de volgende onderdelen:
* Een protocol.
* Authenticatiegegevens, zoals een gebruikersnaam en wachtwoord.
* Een domeinnaam.
* Een poortnummer.
* Een padnaam.
* Een zogenaamde querystring.
* Een zogenaamde fragmentidentifier.
De opbouw van een URL is voor de meeste protocollen als volgt:
    $\underbrace {\mathrm {http\!:\!} } _{\mathrm {protocol} }\underbrace {\mathrm {//user\!:\!pass\ (at)} } _{\mathrm {authenticatie} }\underbrace {\mathrm {voorbeeld.com\!:\!992} } _{\mathrm {domeinnaam\&poortnummer} }\underbrace {\mathrm {/dier/vogel} } _{\mathrm {padnaam} }\underbrace {\mathrm {?soort\!=\!zilvermeeuw} } _{\mathrm {query} }\underbrace {\mathrm {\#vleugels} } _{\mathrm {fragment} }$

### Protocol

Het protocol wordt genoteerd in de vorm van een korte protocolaanduiding (vaak een afkorting) gevolgd door een dubbele punt. URL's kunnen hierdoor voor verschillende protocollen (en dus verschillende doeleinden) gebruikt worden:
| file | 'gewone' bestandssystemen |
| http | Hypertext Transfer Protocol |
| https | HTTPS (HTTP over een beveiligde verbinding) |
| ftp | file transfer protocol |
| irc | Internet Relay Chat |
| mailto | E-mail |
| gopher | Gopher |
| feed | Webfeeds |

### Autoriteit

De autoriteit is de bron van de informatiebron, bijvoorbeeld een host van een website. Deze wordt genoteerd in de vorm //gebruikersnaam:wachtwoord@domein:poort
In de meeste gevallen zijn gebruikersnaam, wachtwoord en poortnummer niet nodig, waardoor het @-teken en de dubbele punten meestal niet in de URL terug te vinden zijn, zoals in bijvoorbeeld //nl.wikipedia.org of //proxy.example.com:8080.

### Padnaam

De precieze betekenis van de padnaam hangt af van het protocol; voor FTP verwijst het meestal naar een fysiek bestand, terwijl het bij IRC naar een kanaal verwijst. Bij HTTP kan het om een bestand gaan, maar bijvoorbeeld ook om een commando aan een zoekmachine of een database manager. Meestal worden ze in de vorm /mapnaam/mapnaam/.../mapnaam/bestandsnaam gebruikt.

### Querystring

Een querystring wordt meestal gebruikt om bepaalde parameters mee te geven aan de URL, zoals de zoektermen van een zoekactie. De querystring volgt na het vraagteken, verschillende parameters in de string worden gescheiden met het ampersandteken.

### Fragmentidentifier

De fragmentidentifier wordt gebruikt om naar een specifiek onderdeel van de informatiebron te verwijzen en wordt genoteerd in de vorm #fragment. In HTML-pagina's worden ze bijvoorbeeld gebruikt om naar tekstankers te verwijzen.

## Eisen aan URL's

* Er mag slechts een beperkte verzameling tekens gebruikt worden om URL's te schrijven. Zo mogen er onder meer geen speciale tekens (die de onderdelen van elkaar onderscheiden) of witruimtes gebruikt worden. Deze tekens dienen dan genoteerd te worden als %code, waarbij code de tweecijferige hexadecimale representatie van de tekencode is.
* Hoewel URL's technisch gezien een oneindige lengte kunnen en mogen hebben, stellen cliënten vaak een lengte-eis aan een URL. Een HTTP-GET-request kan in de meeste browsers maximaal een lengte tussen de 2000 en 4000 tekens bevatten.

## Relatieve URL

Een relatieve URL verwijst naar een URL die afhangt van de URL van de verwijzende pagina, bijvoorbeeld:
* Op de webpagina https://nl.wikipedia.org verwijst "wiki/Wikipedia" naar https://nl.wikipedia.org/wiki/Wikipedia
Als de relatieve URL begint met "/" dan is het een absoluut pad, dat wil zeggen het volledige pad; de doel-URL wordt bepaald door de domeinnaam van de verwijzende pagina en dit pad, en hangt dus niet af van het pad van de verwijzende pagina, bijvoorbeeld:
* Op de webpagina https://nl.wikipedia.org/wiki/Uniform_Resource_Locator verwijst "/wiki/Wikipedia" naar https://nl.wikipedia.org/wiki/Wikipedia