Wir können uns dem ganzen erstmal technisch nähern - RFC3986 - Uniform Resource Identifier (URI): Generic Syntax
https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
path = path-abempty ; begins with “/” or is empty
/ path-absolute ; begins with “/” but not “//”
/ path-noscheme ; begins with a non-colon segment
/ path-rootless ; begins with a segment
/ path-empty ; zero characters
D.h. es ist völlig legitim das der “path” leer ist - Also “Zero characters”.
D.h. nach RFC (Request for Comment - Standards des Internets) ist es nicht notwendig den “/” als path zu haben in einer URI (Uniform Resource Identifier).
Und URIs sind das was wir bei OSM Abbilden.
Die Argumentation des mappers ist das wenn die URI von einem Browser requested wird in dem HTTP Request ja ein “/” requested werden MUSS. Das ist auch richtig.
Wir nehmen mal das RFC für HTTP/1.0 - nachfolgende haben IIRC an dem / nichts geändert - RFC1945 Hypertext Transfer Protocol – HTTP/1.0
https://datatracker.ietf.org/doc/html/rfc1945#section-5.1
Note that the absolute path cannot be empty; if none is present in the original URI, it must be given as “/” (the server root).
D.h. wenn der Browser die URI nimmt und dann bei einem Webserver da einen Request absetzt wird aus dem leeren Path in der URI ein “/” weil es im Protokoll nicht vorgesehen ist das der “path” leer ist. Das macht der Browser für dich.
Das wir deshalb aber weil es im Protokoll (nicht in der Repräsentation der location eines Objektes) ein “/” vorgeschrieben ist an alle URIs ein “/” anhängen ist völliger Unsinn.
Und für den Webserver ist die URI “http://www.dom.ain” überhaupt nicht sichtbar in dieser Repräsentation - Das wird zu so einem Request: (HTTP/1.1)
GET / HTTP/1.1
Host: www.dom.ain
draus - Egal ob du in der URI ein “/” am ende hast oder eben nicht.
RICHTIG ist - wenn du einen path hast d.h.
http://www.dom.ain/path
ist das was anderes als
http://www.dom.ain/path/
Wieder der HTTP Request:
GET /path HTTP/1.1
Host: www.dom.ain
vs.
GET /path/ HTTP/1.1
Host: www.dom.ain
Wie man hier sieht wird das “/” eben nicht drangedichtet sondern nur dann mitgesendet wenn es auch in der URI drin war - aber NUR dann wenn es einen path gibt. Und dann kann natürlich der Webserver - z.b. ein Apache anders reagieren. Ohne Pfad gibt es auf Webserver seite keine unterscheidung.
Also - bei URIs ohne path Bestandteil ist der trailing / überflüssig und nach Standard nicht required - ausserdem macht es keinen unterschied im HTTP request.
Flo