Wann sollte ich einen abschließenden Schrägstrich in meiner URL verwenden?

282

Wann sollte ein abschließender Schrägstrich in einer URL verwendet werden? Zum Beispiel - sollte meine URL so aussehen /about-us/oder so aussehen /about-us?

Ich bin mir der SEO-Probleme voll bewusst - doppelte Inhalte und die kanonische Sache; Ich versuche herauszufinden, welche ich im Zusammenhang mit der korrekten Bereitstellung von Seiten allein verwenden soll.

Zum Beispiel denkt mein Kollege, dass ein abschließender Schrägstrich am Ende bedeutet, dass es sich um einen "Ordner" handelt - ein "Verzeichnis", daher ist dies kein korrekter Stil. Aber ich denke das ohne Schrägstrich am Ende - es ist auch nicht ganz richtig, weil es fast wie ein Ordner aussieht, aber es ist nicht und es ist auch keine normale Datei, sondern ein Dateiname ohne Erweiterung.

Gibt es eine richtige Methode, um zu wissen, welche zu verwenden ist?

Denis
quelle
Trailing Slash, aber meiner Meinung nach ist es hauptsächlich Ästhetik. Schauen und fühlen.
Eric Herlitz
4
Diese Frage wird als eine der Präferenzfragen gestellt und scheint daher als primär meinungsbasiert vom Thema abzuweichen . Wie meine Antwort zeigt, ist es jedoch ein Fehler, diese Frage als Präferenzfrage zu stellen: Dies ist ein XY-Problem, und die zugrunde liegende "echte" Frage hat eine genaue technische Antwort und ist daher nicht primär meinungsbasiert .
Raedwald
Fragen dazu, welche Arten von URLs Google mag, sind nicht programmierungsbezogen (wie im Tag-Wiki erwähnt ) und für Stackoverflow nicht thematisch.
Quentin
Ich habe einige Änderungen an Ihrer Frage vorgenommen. Bitte überprüfen Sie diese, wenn Sie die Möglichkeit dazu haben. Danke :)
Tim Post

Antworten:

131

Nach meiner persönlichen Meinung werden nachgestellte Schrägstriche missbraucht.

Grundsätzlich stammte das URL-Format aus demselben UNIX-Format von Dateien und Ordnern, später auf DOS-Systemen, und wurde schließlich für das Web angepasst.

Eine typische URL für dieses Buch auf einem Unix-ähnlichen Betriebssystem ist ein Dateipfad wie file: ///home/username/RomeoAndJuliet.pdf, der das elektronische Buch identifiziert, das in einer Datei auf einer lokalen Festplatte gespeichert ist.

Quelle: Wikipedia: Uniform Resource Identifier

Eine weitere gute Quelle zum Lesen: Wikipedia: URI Scheme

Gemäß RFC 1738, der 1994 URLs definierte, können Ressourcen, die Verweise auf andere Ressourcen enthalten, relative Links verwenden, um den Speicherort der zweiten Ressource zu definieren, als ob sie sagen würden, "an derselben Stelle wie diese, außer mit dem folgenden Verwandten Pfad". Es ging auf zu sagen , dass eine solche relative URLs sind abhängig von der ursprünglichen URL eine hierarchische Struktur , gegen die die relative Verknüpfung basiert, und dass die ftp, http, und Datei - URL - Schemas sind Beispiele für einige enthalten , die hierarchisch betrachtet werden kann, mit der Komponenten der Hierarchie werden durch "/" getrennt.

Quelle: Wikipedia Uniform Resource Locator (URL)

Ebenfalls:

Das ist die Frage, die wir oft hören. Weiter zu den Antworten! In der Vergangenheit ist es üblich, dass URLs mit einem abschließenden Schrägstrich ein Verzeichnis angeben und URLs ohne abschließenden Schrägstrich eine Datei:

http://example.com/foo/ (mit abschließendem Schrägstrich, üblicherweise ein Verzeichnis)

http://example.com/foo (ohne abschließenden Schrägstrich, üblicherweise eine Datei)

Quelle: Google WebMaster Central Blog - Schrägstrich oder nicht Schrägstrich

Schließlich:

  1. Ein Schrägstrich am Ende der URL lässt die Adresse "hübsch" aussehen.

  2. Eine URL ohne Schrägstrich am Ende und ohne Erweiterung sieht etwas "komisch" aus.

  3. Sie werden Ihre CSS-Datei (zum Beispiel) niemals http://www.sample.com/stylesheet/ benennen , oder?

ABER ich bin ein Befürworter von Web-Best Practices, unabhängig von der Umgebung. Es kann wackelig und unklar sein, genau wie Sie über die URL ohne ext gesagt haben.

Dementic
quelle
1
Dies ist seltsam, Sie können eine Datei nicht "Stylesheet /" nennen - und Schrägstrich oder kein Schrägstrich sind völlig unterschiedliche Ressourcen auf dem Server, egal wie die URL aussieht
nico gawenda
10
@nicogawenda, .htaccess kann alle Arten von Magie ausführen;) Ihr CSS könnte tatsächlich eine PHP-Datei sein!
rmorse
4
Web - Server wird häufig standardmäßig dienen einrichten index.html(oder ähnlich benannten Datei) , wenn ein Verzeichnis zugegriffen wird, so /foo/ist /foo/index.htmlohne die zusätzliche Verwirrung. In der Vergangenheit haben Browser auch /an den Domainnamen angehängt, aber sie (Firefox, Chrome, Opera) haben sich seitdem geändert, um das /beim Zugriff auf die Homepage wegzulassen .
0b10011
4
Ich stimme @bfrohs zu. Sicherlich verstoßen Standardseiten für Verzeichnisse gegen dieses Prinzip. Wenn wir 'trailing slash = directory' erzwingen wollen, müssen sicherlich alle URLs, die auf ein Verzeichnis verweisen, entweder eine Verzeichnisliste oder eine 403 verbotene http-Antwort zurückgeben.
Marvin
11
Ich bin mir nicht sicher, ob die Punkte 1 und 2 im Abschnitt "Endlich" noch korrekt sind. Im Laufe der Jahre, seit dies ursprünglich geschrieben wurde, hat sich der Geschmack geändert. Ich habe dies nicht im Detail untersucht, aber es scheint, dass es auf neueren Websites üblicher und "hübscher" ist, den Schrägstrich wegzulassen.
Speedplane
171

Es ist keine Frage der Präferenz. /baseund /base/haben unterschiedliche Semantik. In vielen Fällen ist der Unterschied unwichtig. Es ist jedoch wichtig, wenn relative URLs vorhanden sind.

  • childrelativ zu /base/ist /base/child.
  • childrelativ zu /baseist (vielleicht überraschend) /child.
Raedwald
quelle
5
Hilfreicher Artikel, der sich eingehend mit diesem Thema befasst
Hephaestus
3
Ja, ich denke, dies ist zusammen mit SEO das Wichtigste für diese Frage.
user2875289
Ich habe gerade dieses Problem bei der Verwendung von .Nets durchlaufen Uri.MakeRelativeUri. Die Ergebnisse spiegeln genau das wider, was Sie gesagt haben. Ich habe das Problem behoben, indem ich den abschließenden Schrägstrich zu meiner Basis hinzugefügt habe Uri.
Julealgon
61

Ich bin immer wieder überrascht über die weit verbreitete Verwendung von abschließenden Schrägstrichen bei Nicht-Verzeichnis-URLs (unter anderem WordPress). Dies sollte wirklich keine Entweder-Oder-Debatte sein, da es semantisch falsch ist, einen Schrägstrich nach einer Ressource zu setzen. Das Web wurde entwickelt, um adressierbare Ressourcen bereitzustellen, und diese Adressen - URLs - wurden entwickelt, um eine Dateisystemhierarchie im * nix-Stil zu emulieren. In diesem Zusammenhang:

  • Schrägstriche bezeichnen immer Verzeichnisse, niemals Dateien.
  • Dateien können beliebig benannt werden (mit oder ohne Erweiterungen), dürfen jedoch keine Schrägstriche enthalten oder mit diesen enden.

Nach diesen Richtlinien ist es falsch, einen Schrägstrich nach einer Nicht-Verzeichnis-Ressource zu setzen.

Yarin
quelle
50
"Schrägstriche nach Verzeichnissen, nicht nach Ressourcen": URLs beziehen sich nicht auf zwei Arten von Dingen: "Ressourcen" und "Verzeichnisse". Sie beziehen sich auf eine Art von Dingen: Ressourcen. Der Hinweis befindet sich im R der URL.
Raedwald
31
Und alles in einem * nix-Dateisystem ist eine Datei, aber Verzeichnisse existieren immer noch. Worauf willst du hinaus?
Yarin
6
Unabhängig davon, ob es intern von einer Datei oder einem Verzeichnis bereitgestellt wird, sieht der Benutzer nur eine Webseite. Und example.com/about könnte tatsächlich von example.com/about/index.html lesen .
Musiphil
1
@ DavidRR: Du hast recht. Und der Browser benötigt die Umleitung, da die Namensauflösung von innen erfolgen muss directory(andernfalls würde image.pngin http://hostname/directorydarauf verweisen http://hostname/image.png). Ich habe nur gesagt, dass die Unterscheidung zwischen einer Datei und einem Verzeichnis aus Sicht des Benutzers möglicherweise nicht sehr wichtig ist.
Musiphil
2
Ich stimme Ihrem Ergebnis zu, bin mir aber nicht sicher, ob wir unser URL-System so gestalten sollten, dass es Dateisysteme im * nix-Stil emuliert. Das mag ursprünglich einen Zweck erfüllt haben, jetzt aber viel weniger.
Speedplane
27

Das ist nicht wirklich eine Frage der Ästhetik, sondern ein technischer Unterschied. Das Verzeichnis, das daran denkt, ist völlig korrekt und erklärt so ziemlich alles. Lass es uns herausfinden:

Sie sind jetzt zurück in der Steinzeit oder bedienen nur statische Seiten

Sie haben eine feste Verzeichnisstruktur auf Ihrem Webserver und nur statische Dateien wie Bilder, HTML usw. - keine serverseitigen Skripte oder was auch immer.

Ein Browser fordert an /index.htm, es existiert und wird an den Client geliefert. Später haben Sie viele - sagen wir - DVD-Filme überprüft und eine HTML-Seite für jeden von ihnen im /dvd/Verzeichnis. Jetzt fragt jemand /dvd/adams_apples.htmund es wird geliefert, weil es da ist.

Irgendwann fordert jemand nur noch an /dvd/- das ist ein Verzeichnis, und der Server versucht herauszufinden, was zu liefern ist. Neben Zugangsbeschränkungen und so weiter gibt es zwei Möglichkeiten: Zeigen Sie dem Benutzer den Verzeichnisinhalt (Ich wette , Sie schon das irgendwo gesehen haben) oder eine Standarddatei zeigen (in Apache ist: DirectoryIndex: sets the file that Apache will serve if a directory is requested.)

So weit so gut, das ist der erwartete Fall. Es zeigt bereits den Unterschied in der Handhabung, also lasst uns darauf eingehen:

Um 5:34 Uhr haben Sie beim Hochladen Ihrer Dateien einen Fehler gemacht

(Was übrigens völlig verständlich ist.) Sie haben also etwas völlig Falsches getan und statt hochzuladen, haben /dvd/the_big_lebowski.htmSie diese Datei als dvd(ohne Erweiterung) hochgeladen /.

Jemand hat Ihre /dvd/Verzeichnisliste mit einem Lesezeichen versehen (natürlich wollten Sie diese raffinierte Liste nicht erstellen und immer aktualisierenindex.htm ) und besucht Ihre Website. Verzeichnisinhalte werden geliefert - alles in Ordnung.

Jemand hat von Ihrer Liste gehört und tippt /dvd. Und jetzt ist es geschraubt. Anstelle Ihres DVD-Verzeichnisses findet der Server eine Datei mit diesem Namen und liefert Ihre Big Lebowski-Datei.

Also löschst du diese Datei und sagst dem Kerl, er solle die Seite neu laden. Ihr Server sucht nach der /dvdDatei, aber sie ist weg. Die meisten Server werden dann feststellen, dass es ein Verzeichnis mit diesem Namen gibt, und dem Client mitteilen, dass das Gesuchte tatsächlich woanders ist. Die Antwort wird höchstwahrscheinlich sein:

Status Code:301 Moved Permanently mit Location: http://[...]/dvd/

Also völlig ignorieren, was Sie Ihre Meinung zu Verzeichnissen oder Dateien , kann der Server nur mit solchen Dingen umgehen und entscheidet - sofern nicht anders angegeben - für Sie über die Bedeutung von "Schrägstrich oder nicht".

Nachdem diese Antwort empfangen wurde, wird der Client geladen /dvd/und alles ist in Ordnung.

Ist es in Ordnung? Nein.

"Gut" ist nicht gut genug für dich

Sie haben eine dynamische Seite, auf der alles übergeben /index.phpund verarbeitet wird. Bis jetzt hat alles ganz gut funktioniert, aber das Ganze fühlt sich langsamer an und Sie untersuchen.

Bald werden Sie feststellen, dass /dvd/listgenau das Gleiche /dvd/list/geschieht : Die Umleitung, in die dann intern übersetzt wird index.php?controller=dvd&action=list. Eine zusätzliche Anfrage - aber noch schlimmer! customer/loginWeiterleitungen, zu customer/login/denen wiederum zur HTTPS-URL von umgeleitet wird customer/login/. Sie haben am Ende Tonnen unnötiger HTTP-Weiterleitungen (= zusätzliche Anforderungen), die die Benutzererfahrung verlangsamen.

Höchstwahrscheinlich haben Sie auch hier einen Standardverzeichnisindex: index.php?controller=dvdohne actioneinfach internes Laden index.php?controller=dvd&action=list.

Zusammenfassung:

  • Wenn es damit endet /, kann es niemals eine Datei sein. Kein Server erraten.

  • Schrägstrich oder kein Schrägstrich sind völlig unterschiedliche Bedeutungen. Es gibt einen technischen / Ressourcenunterschied zwischen "Schrägstrich oder kein Schrägstrich", und Sie sollten sich dessen bewusst sein und ihn entsprechend verwenden. Nur weil der Server höchstwahrscheinlich /dvd/index.htmdas richtige Skriptmaterial lädt - oder lädt -, wenn Sie sagen /dvd: Es tut es, aber nicht, weil Sie die richtige Anfrage gestellt haben. Welches wäre gewesen /dvd/.

  • Wenn Sie den Schrägstrich weglassen, auch wenn Sie tatsächlich die Schrägstrichversion meinen, erhalten Sie eine zusätzliche Strafe für HTTP-Anforderungen. Was immer schlecht ist (denken Sie an die mobile Latenz) und mehr Gewicht hat als eine "hübsche URL" - zumal Crawler nicht so dumm sind, wie SEOs glauben oder wollen, dass Sie glauben;)

nico gawenda
quelle
2
In einer Zusammenfassung sind Sie alle dafür, den Schrägstrich am Ende hinzuzufügen? :)
Denis
2
Ich bin alles dafür, es zu benutzen, wenn du es ernst meinst;) Wenn ich zum Beispiel von Controllern und Aktionen spreche, wäre es: Controller sollten mit einem Schrägstrich enden. Wenn Sie auf eine Datei oder eine Aktion
verweisen, lassen Sie
Moment mal, warum sollten Sie den Schrägstrich für eine Aktion weglassen? Wird dies nach Ihrem Beispiel nicht zu einer zusätzlichen umgeleiteten Anforderung führen? Vermutlich ist Ihr Server intelligent genug, um eine Controller-Aktion zu erkennen, und leitet in diesem Fall nicht um, um nach Dateien oder Verzeichnissen zu suchen, aber es widerspricht trotzdem Ihrem Beispiel, nicht wahr?
Adam Goodwin
7
Ich verstehe dein Beispiel nicht. Welches Dateisystem erlaubt ein Verzeichnis und eine andere reguläre Datei mit demselben Namen ( dvd)?
Musiphil
19

Wenn Sie Ihre URL zu machen /about-us/(mit dem Schrägstrich), ist es einfach , mit einer einzigen Datei zu starten index.htmlund sie dann später erweitern und mehr Dateien (zB hinzufügen our-CEO-john-doe.jpg) oder sogar eine Hierarchie unter ihm bauen (zB /about-us/company/, /about-us/products/usw.) je nach Bedarf, ohne Ändern der veröffentlichten URL . Dies gibt Ihnen eine große Flexibilität.

Musiphil
quelle
9
Es tut mir leid, dass ich es nicht verstanden habe. Wenn ich mit der veröffentlichten URL beginne /about-usoder sie /about-us/in beiden Fällen noch ändern muss, wenn ich das Verzeichnis erweitert habe. Die neue Datei wird /about-us/new-file.htmlin beiden Fällen sein !! Was vermisse ich hier?
Buchhalter
2
@Accountant Ich denke, OP denkt möglicherweise, dass Sie, wenn Sie "/ about-us" ohne einen abschließenden Schrägstrich veröffentlichen, später keine Unterressourcen über relative Pfade hinzufügen können. Wenn Sie keinen abschließenden Schrägstrich haben, geht der Browser davon aus, dass ein Verweis auf "ceo.jpg" auf der About-Seite im Stammverzeichnis Ihrer Domain gespeichert ist, und fordert example.com/ceo.jpg an. Mit dem Schrägstrich fordert der Browser example.com/about-us/ceo.jpg an, und Sie können beim Erweitern statisch einen ganzen Ordnerbaum für Ihre Site weiterleiten.
Morgen
1
Zu Ihrer Information: Ich glaube nicht, dass eines der oben genannten Dinge wahr ist. Warum kann es kein /about-usund geben /about-us/company? In Bezug auf die Bereitstellung der Dateien können sowohl Apache als auch IIS problemlos damit umgehen, daher bin ich anderer Meinung.
Sean2078
1
@ sean2078 Ja, aber wenn /about-usSie einen Link zu erstellen möchten /about-us/company, müssen Sie href="https://stackoverflow.com/about-us/company"oder verwenden href="./company"(sind sich jedoch nicht sicher). Wenn Sie jedoch eingeschaltet sind /about-us/, ist es einfach : href="company".
Adowrath
11

Andere Antworten hier scheinen es zu begünstigen, den abschließenden Schrägstrich wegzulassen. Es gibt einen Fall, in dem ein abschließender Schrägstrich bei der Suchmaschinenoptimierung (SEO) hilft. Dies ist der Fall, wenn Ihr Dokument eine Dateierweiterung aufweist, die dies nicht ist .html. Dies wird zu einem Problem bei Websites, die Websites bewerten. Sie könnten zwischen diesen beiden URLs wählen:

  • http://mysite.example.com/rated.example.com
  • http://mysite.example.com/rated.example.com/

In einem solchen Fall würde ich den mit dem abschließenden Schrägstrich wählen . Dies liegt daran, dass die .comErweiterung eine Erweiterung für ausführbare Windows-Befehlsdateien ist. Suchmaschinen und Virenprüfer mögen häufig keine URLs, die Malware enthalten, die über solche Mechanismen verbreitet wird. Der abschließende Schrägstrich scheint alle Bedenken auszuräumen, sodass die Seite in Suchmaschinen rangieren und von Virenprüfern erfasst werden kann.

Wenn Ihre URLs keine .Dateien enthalten, würde ich der Einfachheit halber empfehlen, den abschließenden Schrägstrich wegzulassen.

Stephen Ostermiller
quelle
Keine echte Suchmaschine ist so dumm. Diese Antwort ist reine Spekulation.
Navin
1
Ich habe dieses Problem tatsächlich bei Google gesehen. Das war vor einigen Jahren, also bin ich mir nicht sicher, ob das heute noch der Fall sein würde.
Stephen Ostermiller
Huh, das ist ein guter Datenpunkt. Obwohl wir immer noch nicht wissen, ob es durch etwas anderes verursacht wurde.
Navin
10

Wer sagt, dass ein Dateiname eine Erweiterung benötigt? Werfen Sie irgendwann einen Blick auf eine * nix-Maschine ...
Ich stimme Ihrem Freund zu, kein abschließender Schrägstrich.

Aaron Gage
quelle
3

Aus SEO-Sicht ist es unerheblich, ob am Ende einer URL ein abschließender Schrägstrich eingefügt werden soll oder nicht. Heutzutage ist es üblich, Beispiele für beides im Internet zu sehen. Eine Website wird weder bestraft noch beeinflusst diese Auswahl das Suchmaschinenranking Ihrer Website oder andere SEO-Überlegungen.

Wählen Sie einfach eine URL-Namenskonvention, die Sie bevorzugen, und fügen Sie ein kanonisches Meta-Tag in den <head>Abschnitt jeder Webseite ein.

Suchmaschinen können eine einzelne Webseite als zwei separate doppelte URLS berücksichtigen , wenn sie es mit und ohne Schrägstrich begegnen, das heißt example.com/about-us/und example.com/about-us.

Es wird empfohlen, auf jeder Seite ein kanonisches Meta-Tag einzufügen, da Sie nicht steuern können, wie andere Websites auf Ihre URLs verlinken.

Das kanonische Tag sieht folgendermaßen aus : <link rel="canonical" href="https://example.com/about-us" />. Durch die Verwendung eines kanonischen Meta-Tags wird sichergestellt, dass Suchmaschinen jede Ihrer URLs nur einmal zählen, unabhängig davon, ob andere Websites beim Verknüpfen mit Ihrer Website einen abschließenden Schrägstrich enthalten.

randalieren
quelle