In
de specificatie zijn ze er nogal onduidelijk over.
An HTTP URL takes the form:
http://<host>:<port>/<path>?<searchpart>
where <host> and <port> are as described in Section 3.1. If :<port>
is omitted, the port defaults to 80. No user name or password is
allowed. <path> is an HTTP selector, and <searchpart> is a query
string. The <path> is optional, as is the <searchpart> and its
preceding "?". If neither <path> nor <searchpart> is present, the "/"
may also be omitted.
Within the <path> and <searchpart> components, "/", ";", "?" are
reserved. The "/" character may be used within HTTP to designate a
hierarchical structure.
De "/" wordt dus gebruikt om componenten in een hierarchische structuur te scheiden, maar hoe dat dan precies moet, wordt niet aangegeven. De meer algemene omschrijving zegt:
Some URL schemes (such as the ftp, http, and file schemes) contain
names that can be considered hierarchical; the components of the
hierarchy are separated by "/".
Ik denk dus dat een URL die eindigt op een "/" geinterpreteerd moet worden als een serie componenten die eindigt met een leeg component. Als de webserver met een achterliggende directorystructuur werkt (zoals gebruikelijk is) dan worden dus gewoon de componenten als directories geinterpreteert. Het laatste component wordt dan gemapt op de naam van een bestand in de directory; is de laatste component leeg, dan wordt een default bestand genomen (index.html, of dus een gegenereerde directory index). Dat is natuurlijk redelijk implementatiespecifiek.
De URL "http://host/aap/noot" verwijst eigenlijk naar het document "noot" dat direct onder "aap" valt, terwijl de URL "http://host/aap/noot/" verwijst naar een document met een leeg identifier, die onder noot valt.
In principe mag een webserver zelf uitmaken hoe dit soort URL's geinterpreteert worden. Apache handelt beide gevallen af, maar ik kan me ook goed voorstellen dat een andere webserver ervoor kiest dat "http://host/aap/noot/" niet kan bestaan, aangezien bestanden met lege bestandsnamen onmogelijk zijn. Uiteindelijk bestaan voor de client immers uitsluitend URL's en (eventuele) bijbehorende documenten en hoe de webserver die URL's omzet naar documenten is volledig aan de webserver.