XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   (X)HTML (http://xhtmlforum.de/forumdisplay.php?f=72)
-   -   Gute URLs: mit oder ohne Slash am Ende (http://xhtmlforum.de/showthread.php?t=56900)

AndreasB 04.05.2009 12:46

Gute URLs: mit oder ohne Slash am Ende
 
Es geht um URLs zu Dokumenten, nicht zu Bildern etc.

Spricht aus Eurer Sicht etwas gegen

HTML-Code:

http://example.tld/foo
http://example.tld/foo/bar

statt

HTML-Code:

http://example.tld/foo/
http://example.tld/foo/bar/

Wikipedia, zum Beispiel, verwendet keinen Slash am Ende ihrer URLs.

Ich empfinde URLs ohne Slash am Ende als besser lesbar und auch schöner.

Einen potentiellen Konflikt durch die gleichzeitige Existenz von
HTML-Code:

http://example.tld/foo.php
und
HTML-Code:

http://example.tld/foo/index.php
kann ich ausschließen.

Falls die Variante ohne Slash am Ende den Server minimal mehr belastet, weil die Prüfung "länger" dauert: das würde mich nicht stören.
Schönheit ginge in diesem Fall vor Rechenzeit-Verbrauch.

Pablo 04.05.2009 13:05

Ich mache es (wenn ich die Möglichkeit dazu habe) wie folgt:

http://example.com/foo/
http://example.com/foo/bar

Sprich: Die letzte Ebene ohne Slash, alle Ebenen davor mit Slash, da diese ja theoretisch Ordner sind in denen noch etwas drin steckt.
sollte foo kein Unterdokument bar besitzen, dann hätte ich example.com/foo gemacht.

Kleine Anmerkung am Rande: "Offizielle" Beispieldomains sind example.com/net/org, da diese wirklich existieren, aber nie Content haben werden.

Gruß,
Pablo

Gumbo 04.05.2009 16:06

Ich würde den abschließenden Schrägstrich weglassen. Damit wären typenspezifische URLs wie etwa „/foo/bar.html“ oder „/foo/bar.pdf“ gegenüber der typengenerischen URL „/foo/bar“ dennoch möglich. Einzige Ausnahme ist die Sprachidentifizierung, etwa „/de/“ statt nur „/de“ (aber dennoch „/de/foo/bar“). Siehe auch meinen Beitrag in URL-Darstellung.

AndreasB 04.05.2009 17:04

Zitat:

Zitat von Pablo (Beitrag 432072)
Ich mache es (wenn ich die Möglichkeit dazu habe) wie folgt:

http://example.com/foo/
http://example.com/foo/bar

Sprich: Die letzte Ebene ohne Slash, alle Ebenen davor mit Slash, da diese ja theoretisch Ordner sind in denen noch etwas drin steckt.
sollte foo kein Unterdokument bar besitzen, dann hätte ich example.com/foo gemacht.

Ein Lösung, wo ich den URL ändern müsste, wenn ein "Unterdokument" dazukäme, möchte ich nicht verwenden.

AndreasB 04.05.2009 17:37

Zitat:

Zitat von Gumbo (Beitrag 432092)
Ich würde den abschließenden Schrägstrich weglassen. Damit wären typenspezifische URLs wie etwa „/foo/bar.html“ oder „/foo/bar.pdf“ gegenüber der typengenerischen URL „/foo/bar“ dennoch möglich.

Danke für den Kommentar. Mich interessiert in dem Zusammenhang auch Eure Praxis für die lokale Verzeichnisstruktur.

Die Verzeichnisstruktur

Code:

/8/
  /baby-biker/
    index.php
  /elektrofahrrad/
    index.php
  /gelesen/
    index.php
  /hohlspeiche/
    index.php
  /leserbriefe/
    index.php
  index.php

nimmt "sehr viel Höhe" im Dateimanager ein und ist damit unübersichtlich.

Als besser empfinde ich den "gezielten Umgang mit Ordnern". Nicht zuviele, nicht zu wenige.

In meinem (unverwirklichten) Ideal bildet die Verzeichnisstruktur auch die erwünschte Reihenfolge (Dateimanager, die ein manuelles freies Sortieren erlauben, sind mir nicht bekannt) der Artikel ab.

Könnte mein Editor sinnvoll mit Dateien ohne Dateiendung umgehen, würde ich selbstverständlich auch die Endungen eliminieren, welche die
Lesbarkeit mindern.

Code:

/8/
  01-editorial.php
  02-elektrofahrrad.php
  03-baby-biker.php
  aa-gelesen.php
  bb-leserbriefe.php
  bb-hohlspeiche.php

Die letzten drei Artikel sind übrigends wiederkehrende Rubriken. Daher muss ihre Sortierung unabhängig von der Anzahl der anderen Artikel sein.

Großer Nachteil der Methode mit Praefixen eine Sortierung zu erwingen:
Der Server müsste mit passenden Regeln in die Lage versetzt werden, dem "guten URL" (also ohne Praefix) die passende Datei zuzuordnen.
Alternativ müsste man vor dem Hochladen der Dateien automatisch alle Namen ändern lassen.
Für Programmierer wahrscheinlich Kleinigkeiten.

Mich interessiert Eure Praxis, Eure lokale Verzeichnisstruktur.

Gumbo 04.05.2009 18:16

Dank Rewrite-Techniken wie etwa Apaches mod_rewrite kannst du die URL ganz nach Belieben gestalten. So wäre beispielsweise auch nur „/editorial“, „/elektrofahrrad“ usw. möglich.
Und wenn du dann noch ein CMS einsetzt, ließe sich das Ganze auch relative bequem verwalten.

Ein ganz einfaches System wäre beispielsweise, das Dateiverzeichnis direkt als Vorlage zu nehmen. So könnte etwa „/foo“ entweder auf „/foo/index.php“ oder auf „/foo.php“ abgebildet, „/foo/bar“ entweder auf „/foo/bar/index.php“ oder auf „/foo/bar.php“ abgebildet werden (je nach gewünschter Reihenfolge und Existienz der Dateien), entweder direkt oder als Parameter für die „/index.php“:
Code:

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteCond $0/index.php .*
RewriteCond %{DOCUMENT_ROOT}$0/index.php -f [OR]
RewriteCond $0.php .*
RewriteCond %{DOCUMENT_ROOT}$0.php -f
RewriteRule ^[^/.]+(/[^/.]+)*$ %0 [L]


AndreasB 04.05.2009 18:29

@Markus (Gumbo)

Danke für die Beispiele mit "Mod Rewrite".

Was sind denn Deine eigenen Vorlieben für eine Verzeichnisstruktur?

Gumbo 04.05.2009 18:39

Das ist eigentlich egal. Entscheide dich, was dir besser gefällt.

Die von mir genannte Variante hätte den Vorteil, dass beide parallel geführt werden könnten. Folgende Dateistruktur würde also funktionieren:
Code:

+------------------+----------+
|Dateisystem      | URL-Pfad |
+------------------+----------+
| /foo.php        | /foo    |
| /bar            |          |
| +- /index.php    | /bar    |
| +- /baz.php      | /bar/baz |
+------------------+----------+

Wenn allerdings parallel ein „/foo/index.php“ existierte, würde dieses vorgezogen.
Wenn du dich also entschließt, neben dem Index-Dokument noch weitere Dokumente zu führen, empfehle ich dir den Umstieg auf ebendiese „/foo/index.php“, um nicht so etwas zu bekommen:
Code:

+----------------+------------+
|Dateisystem    | URL-Pfad  |
+----------------+------------+
| /foo          |            |
|  +- /quux.php  | /foo/quux  |
| /foo.php      | /foo      |
| /bar          |            |
|  +- /index.php | /bar      |
|  +- /baz.php  | /bar/baz  |
+----------------+------------+

Das würde nur irritieren (zweimal „foo“, einmal „/foo“ und einmal „/foo.php“). Stattdessen:
Code:

+----------------+------------+
|Dateisystem    | URL-Pfad  |
+----------------+------------+
| /foo          |            |
|  +  /index.php | /foo      |
|  +- /quux.php  | /foo/quux  |
| /bar          |            |
|  +- /index.php | /bar      |
|  +- /baz.php  | /bar/baz  |
+----------------+------------+

Eine einebige Nur-„index.php“-Variante hingegen wäre auch nicht sinnvoll:
Code:

+----------------+------------+
|Dateisystem    | URL-Pfad  |
+----------------+------------+
| /foo          |            |
|  +- /index.php | /foo      |
| /bar          |            |
|  +- /index.php | /bar      |
+----------------+------------+

Stattdessen wäre folgendes vorzuziehen:
Code:

+----------------+------------+
|Dateisystem    | URL-Pfad  |
+----------------+------------+
| /foo.php      | /foo      |
| /bar.php      | /bar      |
+----------------+------------+


AndreasB 06.05.2009 10:32

Zitat:

Zitat von Gumbo (Beitrag 432105)
[...]
[/code]Stattdessen wäre folgendes vorzuziehen:
Code:

+----------------+------------+
|Dateisystem    | URL-Pfad  |
+----------------+------------+
| /foo.php      | /foo      |
| /bar.php      | /bar      |
+----------------+------------+


Bei einem guten URL geht es IMHO auch um Persistenz. Also: hat er Bestand, auch wenn es typische Änderungen auf der Site gibt.

Eine typische Änderung:
Ein Artikel wird in mehrere Artikel aufgeteilt

Wenn man URLs mit Slash am Ende verwendet, muss nichts geändert werden.
Aus der ehemaligen Artikelseite wird eine Übersichtsseite.

Ein anderer Punkt, der für Slashes am Ende sprechen könnte:
Butchering

Also das händische Kürzen von URLs nach links, bis zum nächsten Slash.
Es sollte gewährleistet sein, dass jede URL die auf einen Slash endet, einen sinnvollen Inhalt ausgibt, typischerweise eine Übersicht oder eine Startseite für den Bereich, der durch den letzten Namensbestandteil gekennzeichnet wird.

Ich habe einige Gedanken zur lokalen Verzeichnisstruktur aufgeschrieben:
Verzeichnisstruktur und URLs

Über Eure Kommentare/ Gedanken dazu freue ich mich.

inta 06.05.2009 11:18

Ich verstehe dein Problem nicht. Dass im Dateibrowser alphabetisch sortiert wird ist doch in Ordnung, warum sollte die Reihenfolge dort der in deiner Navigation entsprechen? Der User sieht deine Verzeichnisstruktur doch eh nicht und du kannst doch sicher zwischen URL und Verzeichnisstruktur trennen, oder nicht?

Zu der Verzeichnisstruktur an sich kann ich dir wenig sagen, da ich nicht mit statischen Dateien arbeite. Die Templates liegen bei mir alle in einem Verzeichnis, wenn es mal zu viele werden sollten, dann fasse ich sie nach Funktion in Verzeichnisse zusammen. Ich befürchte, das hilft dir nicht weiter?!

Ob du einen abschließenden Slash verwendest oder nicht, ist meiner Meinung nach genau die gleiche Problematik wie bei der Frage: www-Subdomain oder nicht? Ich würde, egal in welchem Fall, immer per 301 auf die vorhandene Variante weiterleiten.
Bisher habe ich immer einen abschließenden Slash verwendet (bei der blanken Domain wird auch immer einer angehängt, daher hatte ich das so übernommen), aber mittlerweile bin ich durch Gumbos Beiträge zu dem Thema von der Variante ohne abschließenden Slash überzeugt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:32 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023