Wofür ist // in einer URL? [geschlossen]

39

Wenn ich das sehe //, folgt es normalerweise einem Protokollpräfix wie http:oder ftp:. Ich habe es noch nie woanders gesehen. Beispielsweise,

http://www.google.com/

ist eine typische URL.

Die folgenden beiden Syntaxen ergaben jedoch unterschiedliche Versionen derselben Site:

http://www.weather.com/

http://www.weather.com//

Ich hätte gedacht, dass //irgendwo anders als die Protokollspezifikation ungültig wäre. Zu meiner Überraschung habe ich mich geirrt. Was ist mit dem Ende //, das eine andere Version derselben Site erzeugt?

BEARBEITEN:

Jemand an dieser Stelle muss Wind von der anderen Seite bekommen haben, da beide Links jetzt auf derselben Seite landen.

Chad Harrison
quelle
9
Wenn ich raten müsste, ist alles, was Sie tun, die gleiche Site zweimal zu sehen, aber die mit dem Extra / am Ende bricht das CSS oder was auch immer Kinder heutzutage verwenden, um ihre Websites mit zu formatieren. :)
Mark Allen
webmasters.stackexchange.com könnte besser zu dieser Frage passen.
Mehper C. Palavuzlar
1
@ MehperC.Palavuzlar Im Nachhinein ja. Aber zum Zeitpunkt der Frage dachte ich, der Anwendungsbereich sei etwas breiter als das, was er ist.
Chad Harrison
@MarkAllen Nun seine interessant zu bemerken , dass die Verwendung ///oder ////am Ende der URL führte die gleiche Stelle wie , /wo // tat Ergebnis in etwas anderes.
Chad Harrison
Inzwischen ist der doppelte Backslash (\\) in der Windows-Konvention zur einheitlichen Benennung üblich, z. B.\\HostName[@Port]\SharedFolder\Resource
William C

Antworten:

67

Das Leading //ist Teil der URL-Syntax. Der Erfinder des World Wide Web hat sich für diesen Fehler entschuldigt .

Wirklich, wenn Sie darüber nachdenken, brauchen Sie keinen doppelten Schrägstrich. Ich hätte es so auslegen können, dass es keinen doppelten Schrägstrich gibt. - Sir Tim Berners-Lee, Erfinder des World Wide Web


Was das Nachziehen angeht //, ist es wirklich kein doppelter Schrägstrich. Der erste Schrägstrich trennt den Hostnamen vom Pfad. Der letzte Schrägstrich ist der Pfad. Ein Webserver kann, wenn er möchte, einen /anderen als einen leeren Pfad behandeln, und anscheinend ist dies bei weather.com der Fall. Ob dies zufällig oder absichtlich ist, müssen Sie sie danach fragen.

David Schwartz
quelle
Das macht es komplett, denn Sie können einen Webserver so konfigurieren, dass er nach einem anderen Index als dem Webstamm sucht! Mein Hut ist weg zu Ihnen, guter Herr.
Chad Harrison
Wollen Sie damit sagen, http://example.comkann anders behandelt werden als http://example.com/? Ich hätte nicht gedacht, dass dies beim ersten Schrägstrich der Fall ist.
DisgruntledGoat
1
@DisgruntledGoat Sie konnte , ja, mit einigen .htaccessRegeln. Aber das solltest du wahrscheinlich nicht.
Matthew
1
Sie können nicht http://example.comanders behandeln als http://example.com/auf einem Webserver, da beide einen leeren Pfad haben. Sie können sie in einem Browser anders behandeln.
David Schwartz
3
neverminding den Host - Header, null oder eins übersetzen Schrägstriche auf die gleiche HTTP - Anfrage: GET / HTTP/1.1: tools.ietf.org/html/rfc2616.html#section-3.2.3
SingleNegationElimination
19

In jüngerer Zeit, könnte es , dass der doppelte Schrägstrich argumentiert wird , hat eine Rolle. Google empfiehlt (um beispielsweise zu vermeiden, dass versehentlich unsicherer Inhalt von einer sicheren Seite aufgerufen wird), das Protokoll in eingebetteten Ressourcen (Stylesheets, Js usw.) wie folgt wegzulassen

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

So ist es jetzt offensichtlich, dass eine solche protokolllose URL eine vollqualifizierte URL ist und keine relative URL (die mit einem einzelnen Schrägstrich beginnen würde).

DaveP
quelle
1
Dieser Stil wird als "protokollbezogener" URL / URI bezeichnet. Es gibt ähnliche Fragen zu SO.
Hippietrail
1
Nicht mehr empfehlen. Siehe auch paulirish.com/2010/the-protocol-relative-url
Lorond
13

Um tatsächlich die Frage zu beantworten, gab die ursprüngliche Spezifikation das Protokoll http:(oder möglicherweise ftp:, gopher:, mailto:, news:, telnet:, wais:, file:oder prospero:) , dann ein , // um anzuzeigen , dass die Uniform Resource Locator (URL) Syntax verwendet wurde, dann wird die Host (optional mit dem Präfix user:password@) , dann Adresse richtig mit einem anderen anfangen /. Dies wurde in RFC 1738 vorgeschlagen .

Als sich das Internet weiterentwickelte, http:wurde es zum vorherrschenden Protokoll, sodass Browser jetzt davon ausgehen, dass ein Präfix von http://hinzugefügt werden sollte, wenn es nicht vorhanden ist.

StarNamer
quelle
3
Ihre Antwort scheint darauf hinzudeuten, dass zu einem bestimmten Zeitpunkt etwas anderes als die URL für das Protokoll verwendet worden sein könnte, und dass etwas anderes verwendet worden wäre, als //anzuzeigen, dass es verwendet wurde ... Ist das so?
Izkata
3
@Izkata In den späten 80ern und 90ern, als das Internet startete, wurden verschiedene Formate für verschiedene Artikel vorgeschlagen. URLs waren / sind eine Teilmenge von URNs (siehe RFC 3305) und diese können unterschiedliche Formate haben, z isbn:1-23-456789-12-3. In der Praxis http:definiert das, dass der Rest eine URL sein wird. RFCs sind nur Vorschläge und ermöglichen häufig Erweiterungen, die nie zustande kommen. An einem Punkt sagte Tim Berners-Lee, dass das //für ein "Subnetz" war (zB http:/govnet/whitehouse.gov). Diese Idee wurde nie benutzt, aber '//' bleibt so, wie es der Code jetzt erwartet und prüft.
StarNamer
1
@Izkata: Es wird wahrscheinlich keine Nicht-URL-URN angezeigt, die mit einem Kommunikationsprotokoll verwendet wird. Dafür ist das // da. Es zeigt an, dass das Protokoll verwendet wird, um auf einen (möglicherweise entfernten) Netzwerkstandort zuzugreifen, an dem sich eine Ressource befindet. Es gibt viele andere URNs, die andere Datenteile haben und // nicht verwenden (Ihr Browser erkennt beispielsweise wahrscheinlich "mailto:"). Siehe: en.wikipedia.org/wiki/URI_scheme
KutuluMike
@MichaelEdenfield Nun, das ist es, was ich mich jetzt frage. Gab es jemals einen Punkt , wo es wurde bestimmt anders verwendet werden - etwas anderes , das durch das gleiche Protokoll kommunizieren können. Als krasses Beispiel könnte die Absicht zu einer Zeit gewesen , http://www.google.com/und http:%/74.125.225.97/sowohl gültig sein und //zeigen einen Hostnamen , während etwas anderes wie %/eine IP - Adresse angeben?
Izkata
1
Ich glaube nicht. Zumindest habe ich noch nie Entwürfe / Beispiele / etc gesehen, die ein alternatives Hierarchieschema für URLs haben. Mein Eindruck war schon immer, dass TBL nur etwas wollte, um zu verdeutlichen, dass eine URL auf eine tatsächliche Ressource (und keine willkürlichen Daten) verweist, und dass die Verwendung von // dafür gesorgt hat, dass die Dinge hinreichend dateiähnlich aussehen. Jeder andere URN-Stil, den ich je gesehen habe, enthält im Datenteil kein spezielles Präfix. Einige Protokolle erlauben das (ich denke, Telnet und Gopher, zB), aber ich habe noch nie so etwas für http (s) gesehen.
KutuluMike
1

Ich möchte zu Davids akzeptierter Antwort hinzufügen:

Trotz der Entschuldigung des Erfinders des Internets hatte die Syntax mit zwei Schrägstrichen meines Erachtens einen wichtigen Zweck: sich optisch hervorzuheben. Doppelte Schrägstriche ermöglichten eine einfache visuelle Unterscheidung von URLs in einem Text ohne Hyperlinks. Wenn Sie doppelte Schrägstriche sahen, dachten Sie sofort, dass diese in ein Browserfenster eingegeben werden könnten, ähnlich wie Sie es für einen Text hielten@könnte verwendet werden, um eine E-Mail zu senden. Dies war besonders wichtig in der Übergangsphase zum Web, in der Protokolle dieser Zeit (ftp, telnet, gopher) ihre eigene seltsame Vorstellung hatten, Serveradressen oder Ressourcenpfade darzustellen, selten beides. Die meisten Probleme, die mit doppelten Schrägstrichen verbunden sind, würden weiterhin bestehen, da doppelte Schrägstriche der am wenigsten kryptische Teil einer URL sind. Denken Sie an Portnummern, die prozentuale Kodierung und die Berücksichtigung der Groß- und Kleinschreibung. Aber eine URL wie http: something.com könnte leicht mit meinem Beispiel hier verwechselt werden: something.com. Schauen Sie sich auf der anderen Seite http: // an, wie es wie ein Diamant glänzt. Doppelte Schrägstriche waren ein wichtiger Bestandteil der Web-Symbolik und ich glaube, dass sie auch die Akzeptanzrate beschleunigte, selbst wenn sie unbeabsichtigt war.

Sie hätten AmigaOS auch die Unterscheidung zwischen Dateinamen und URLs erleichtern können, da AmigaOS die Dateipfadsyntax verwendete volume:path/to/destination. :)

Sedat Kapanoglu
quelle