Richtlinien für URI-Design

Avatar of Jacob Gillespie
Jacob Gillespie am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Dies ist ein Gastbeitrag von Jacob Gillespie, der einen interessanten Thread auf Forrst zu diesem Thema gestartet hat. Ich lud ihn ein, ihn hier zu veröffentlichen, was er dankend annahm.

In den letzten Jahren habe ich mich für Usability und Webdesign interessiert. Einer der Bereiche, der beim Design einer Website oft übersehen wird, ist das Design derURIs auf dieser Website. ModerneCMSSysteme ermöglichen unterschiedliche Grade der URI-Anpassung, aber die Standardeinstellungen sind oft nicht so benutzerfreundlich, wie sie sein könnten, und URIs werden oft zuletzt im Designprozess platziert.

Saubere URIs sind ein Bestandteil einer sauberen Website, und zwar ein wichtiger. Der Großteil des Endnutzerzugangs zum Internet beinhaltet eine URI, und ob der Benutzer die URI tatsächlich eingibt oder nicht, arbeitet er dennoch mit einer.

Zuerst möchte ich über die Leitprinzipien des URI-Designs sprechen, dann über die praktische Umsetzung dieser Prinzipien.

Hinweis: Ursprünglich habe ich diesen Artikelentwurf mit dem Begriff „URL“ verfasst, aber da „URL“ größtenteils durch „URI“ ersetzt wurde, habe ich ihn aktualisiert, um den Begriff URI zu verwenden. Weitere Informationen vom W3C.

Prinzipien

Werfen wir zunächst einen Blick auf einige der allgemeinen Prinzipien des URI-Designs.

Eine URI muss ein Objekt eindeutig und dauerhaft repräsentieren

Eine der grundlegendsten Philosophien hinter einer URI ist, dass sie ein Datenobjekt im Internet repräsentiert. Die URI muss eindeutig sein, so dass sie eine Eins-zu-eins-Entsprechung ist – eine URI pro Datenobjekt.

Obwohl dies immer das Ziel ist, gibt es Zeiten, in denen es sehr schwierig oder unmöglich ist, dies zu erreichen. Kanonische URL-Tags wurden erfunden, um die Menge an doppeltem Inhalt, die von einer Suchmaschine gesehen wird, zu reduzieren. Obwohl sie keine endgültige Lösung sind, werden kanonische URLs dringend empfohlen, da große Suchmaschinen wie Google ihnen jetzt Aufmerksamkeit schenken. Weitere Informationen zu kanonischen URLs finden Sie in diesem Artikel von SEOmoz.

URIs sollten auch dauerhaft sein (d.h. die URI einmal wählen und dabei bleiben). Dies spricht für ein gutes URI-Design vor dem Start einer Website, wobei die URIs sorgfältig geplant werden. Es wird eine Zeit kommen, in der Sie Verbesserungen an Ihren Entscheidungen vornehmen oder die URI-Struktur anderweitig ändern müssen. Wenn dies notwendig wird, stellen Sie sicher, dass Sie auf Ihrem Server HTTP 301 Moved Permanently-Weiterleitungen einrichten. Dies teilt Browsern und Suchmaschinen den neuen Speicherort des Inhalts mit und bewahrt auch jeglichen PageRank, den die alte URI angesammelt hat.

So benutzerfreundlich wie möglich sein

Dies ist der fundamentalste treibende Faktor hinter dem URI-Design (oder sollte es sein). URIs sollten mit dem Endbenutzer im Hinterkopf entworfen werden. Suchmaschinenoptimierung (SEO) und einfache Entwicklung sollten an zweiter Stelle stehen.

Eine Möglichkeit, eine URI benutzerfreundlich zu halten, besteht darin, sie kurz und prägnant zu halten. Das bedeutet, so wenig Zeichen wie möglich zu verwenden, während die Benutzerfreundlichkeit erhalten bleibt. Also ist /about besser als /about-acme-corp-page. Während man danach strebt, so kurz wie möglich zu sein, sollte man diese Benutzerfreundlichkeit nicht opfern, indem man URIs wie /13d2 verwendet, da dies für die Endbenutzer keine Bedeutung hat.

Umgekehrt wird die Verwendung eines Kurzlinks beim Teilen einer URI empfohlen. Dies ist großartig zum Twittern von Links auf Twitter oder zum Teilen auf sozialen Websites wie Facebook oder Google Buzz. Es ist großartig, wenn Sie Ihren eigenen URI-Shortener aus SEO-Gründen kontrollieren können, obwohl eine Website wie Bit.ly auch gut ist. Ich persönlich verwende PrettyLink Pro (ein WordPress-Plugin), um meine kurzen URIs zu erstellen. Eine Alternative ist das Short URL-Plugin.

WordPress bietet eine Schaltfläche an, um einen Kurzlink zu einem Beitrag zu erhalten, basierend auf dem WordPress-eigenen Format /?p=XXX, das wahrscheinlich kürzer ist als Ihre gewählte Permalink-Struktur. Der Vorteil ist, dass dies funktioniert, solange Ihre Website existiert. Der Nachteil ist, dass die Kürze des Links von der Länge Ihres Domainnamens abhängt.

Die URI sollte sich nicht auf Informationen verlassen, die für den Inhalt oder den Benutzer unwichtig sind. Ein häufiges Beispiel hierfür ist die Verwendung der Datenbank-ID als URI, wie in /products/23. Der Endbenutzer interessiert sich nicht dafür, dass das Produkt die Datenbank-Datensatznummer 23 ist, daher ist eine URI wie /products/kugelschreiber viel besser. Es kann verlockend sein, auf eine so schlechte URI-Struktur zurückzugreifen, da es auf dem Backend oft einfacher ist, die Datenbank mit einer ID abzufragen, anstatt eine Suche nach einem Alias durchführen zu müssen, um das Objekt zu finden.

Ein guter Test, um festzustellen, ob eine URI benutzerfreundlich ist, ist der "sprechfreundliche" Test. Man sollte eine URI in einem Gespräch mit einem Freund erwähnen können, und sie sollte Sinn ergeben. Zum Beispiel

Meine Biografie ist auf domain Punkt com Schrägstrich jim

anstelle von

Meine Biografie ist auf domain Punkt com Schrägstrich Seite Schrägstrich g g 2 3

Konsistenz

URIs auf einer Website müssen im Format konsistent sein. Sobald Sie Ihre URI-Struktur gewählt haben, bleiben Sie konsistent und folgen Sie ihr! Eine gute URI-Struktur für einen Teil der Website bedeutet, dass Sie insgesamt immer noch eine schlechte Struktur haben. Damit ein Benutzer darauf vertrauen kann, dass URIs auf einer Website auf eine bestimmte Weise funktionieren, muss das Format konsistent sein. Wenn Sie die Struktur wechseln müssen (vielleicht aktualisieren Sie eine schlecht gestaltete Website), verwenden Sie 301-Weiterleitungen, wie zuvor erwähnt.

"Hackbare" URIs

Im Zusammenhang mit der Konsistenz sollten URIs so strukturiert sein, dass sie verständlich „hackbar“ oder veränderbar sind. Wenn zum Beispiel /events/2010/01 einen monatlichen Kalender mit Ereignissen vom Januar 2010 anzeigt, dann sollte

  • /events/2009/01 einen Veranstaltungskalender für Januar 2009 anzeigen
  • /events/2010 sollte Veranstaltungen für das gesamte Jahr 2010 anzeigen
  • /events/2010/01/21 sollte die Ereignisse vom 21. Januar 2010 anzeigen

Schlüsselwörter

Die URI sollte aus Schlüsselwörtern bestehen, die für den Inhalt der Seite wichtig sind. Wenn die URI also für einen Blog-Beitrag mit einem langen Titel ist, sollten nur die Wörter, die für den Inhalt der Seite wichtig sind, in der URI enthalten sein. Wenn der Blog-Beitrag beispielsweise „Meine Reise zu Best Buy für Speicherkarten“ lautet, könnte die URI /posts/2010/07/02/reise-best-buy-speicherkarten oder etwas Ähnliches sein.

Als Nebeneffekt verbessert die Verwendung wichtiger Schlüsselwörter in der URI die SEO. Meine persönliche SEO-Philosophie ist, dass man, anstatt für Suchmaschinen zu optimieren, für gute Inhalte optimieren sollte. Suchmaschinen haben es sich zum Ziel gesetzt, die besten Inhalte im Web zu finden, daher wird meiner Meinung nach alles getan, um eine benutzerfreundliche Website mit großartigen Inhalten und Möglichkeiten für weitere Informationen (Links) zu schaffen, die besten langfristigen Ergebnisse für die Sichtbarkeit in Suchmaschinen erzielen.

Technische Details

Wir haben einige der Leitprinzipien des URI-Designs behandelt. Nun wollen wir uns einige technische Umsetzungen dieser Richtlinien ansehen.

Keine Anzeichen der zugrunde liegenden Technologie

Die URI sollte keine .html, .htm, .aspx (ein großes Ärgernis) oder etwas anderes angehängt haben, das nur dazu dient, die zugrunde liegende Technologie anzuzeigen. Kein Endbenutzer interessiert sich dafür, ob Ihre Website in ASP.NET (.aspx), ColdFusion (.cfm) geschrieben wurde oder Server Side Includes (.shtml) verwendet – oder zumindest die meisten Endbenutzer nicht. Die zusätzlichen Informationen sind nur zusätzliche Eingabe und zusätzlicher Raum für Fehler und Frustration.

Die einzige Ausnahme von dieser Regel ist das Anhängen eines Postfix wie .atom, .rss oder .json an eine URI, um anzufordern, dass das bestimmte Format zurückgegeben wird. Alternativ könnte das Format mit dem Accept HTTP-Header angefordert werden.

Kein WWW

Das www. sollte aus der Website-URI entfernt werden, da es unnötiges Tippen ist und gegen die Regeln verstößt, so benutzerfreundlich wie möglich zu sein und keine unnötigen Informationen in die URI aufzunehmen.

Viele Benutzer geben jedoch immer noch das www.-Präfix ein, daher sollte www.domain.com per 301-Weiterleitung auf domain.com umleiten. Das Gleiche gilt für die 301-Weiterleitung von www.subdomain.domain.com auf subdomain.domain.com.

Format

URIs sollten im Format

domain.com/[Schlüsselinformationen]/[Name]/?[Modifikatoren]

Schlüsselinformationen sind Informationen, die nicht der Objektidentifikator (wie der Beitragstitel) sind, aber dennoch entscheidend für den Zugriff auf das Objekt. Dies kann beinhalten:

  • die Art der Sache (d.h. Beiträge)
  • die übergeordnete Kategorie (d.h. Technologie)
  • wichtige Datenmember (d.h. das Veröffentlichungsdatum)

Modifikatoren ändern die Ansicht, nicht das dargestellte Datenmodell, und sind daher Teil des Abfrage-Strings und nicht der URI selbst.

Die Menge an „Schlüsselinformationen“ sollte auf ein Minimum beschränkt werden, da URIs nicht übermäßig verschachtelt sein sollten. Jeder im Abschnitt der Schlüsselinformationen platzierte Punkt muss wirklich entscheidend für die Adressierung der Seite sein.

Am Ende sollte die URI eine absteigende Hierarchie darstellen. Zum Beispiel

  • Domain
  • Typ
  • Kategorie
  • Titel

Beispiel: http://domain.com/posts/servers/nginx-ubuntu-10.04. Bei Elementen mit Datumsangaben sollte das Format der absteigenden Hierarchie folgen

  • Jahr
  • Monat
  • Tag

Beispiel: http://domain.com/news/tech/2007/11/05/google-announces-android.

Google News hat einige interessante Anforderungen für Webseiten, die in den Google News-Ergebnissen gelistet werden möchten – Google benötigt mindestens eine 3-stellige eindeutige Nummer. Da Google Zahlen ignoriert, die wie Jahreszahlen aussehen, wird eine 5- oder mehrstellige Zahl bevorzugt. Außerdem wird eine Google News-Sitemap empfohlen. Dies ist einer der Fälle, in denen Sie, wenn Sie unbedingt Google News ansprechen möchten, dieser minderwertigen URI-Struktur entsprechen müssen. Aber, wenn Sie müssen, stellen Sie sicher, dass Sie konsistent sind und dass sie immer noch hackbar ist (verwenden Sie zum Beispiel das Format yyyymmdd wie 20100701).

Alles Kleinbuchstaben

Alle Zeichen müssen klein geschrieben sein. Der Versuch, jemandem eine URI zu beschreiben, wenn Groß- und Kleinschreibung gemischt sind, ist nahezu unmöglich.

Wenn jemand die URI in gemischter Groß-/Kleinschreibung eingibt, sollte er per 301-Weiterleitung auf die kleingeschriebene Seite umgeleitet werden. Das klingt sehr schön, aber in der Praxis bin ich nicht genau sicher, ob das möglich ist... die Verwendung eines CMS, das alle Anfragen an eine einzige Datei umschreibt, wäre der einfachste Weg, dies zu erreichen, da das Skript die 301-Weiterleitung auf Kleinbuchstaben auslösen könnte, aber ich bin nicht sicher, ob es einen einfacheren Weg gibt (.htaccess-Regeln oder so).

Aktionen an die URI angehängt

Aktionen können an die URI angehängt werden, wie z.B. Anzeigen, Löschen, Bearbeiten usw. Nicht-destruktive Aktionen (die das Objekt nicht ändern) sollten mit einem HTTP GET angefordert werden, während destruktive Aktionen per POST an die URI gesendet werden sollten. Suchen Sie bei Google nach REST URI Design für weitere Informationen.

URI-Bezeichner sollten URI-freundlich gestaltet werden

Eine URI kann den Titel eines Beitrags enthalten, und dieser Titel kann Zeichen enthalten, die nicht URI-freundlich sind. Dieser Beitragstitel muss daher URI-freundlich gemacht werden. Zum Beispiel

  • Alle Großbuchstaben werden in Kleinbuchstaben umgewandelt
  • Zeichen wie é sollten in e umgewandelt werden (usw.)
  • Leerzeichen sollten durch Bindestriche ersetzt werden
  • Unbekannte Zeichen (!, @, #, $, %, ^, &, *, etc.) sollten durch einen Bindestrich ersetzt werden
  • Doppelte Bindestriche (–) sollten durch einen einfachen Bindestrich ersetzt werden
  • Wahrscheinlich vergesse ich noch weitere Regeln

Zeichen können URI-escaped werden (wie %20 für das Leerzeichen), aber dies ist aus vielen der oben genannten Gründe (zeigt Technologie, unnötiges Tippen usw.) im Allgemeinen eine schlechte Idee.

Lustige Idee

Verwenden Sie eine satzähnliche Struktur (Dank an Chris Shiflett)

chriscoyier.net/authored/digging-into-wordpress/
chriscoyier.net/has-worked-for/chatman-design/
chriscoyier.net/likes/trailer-park-boys

jacobwg.com/thinks/this-post/is/basically-done

Wenn Sie weitere URI-Richtlinien kennen, die ich vergessen habe, oder Kommentare zu denen haben, an die ich mich erinnert habe, würde ich sie gerne hören!

Danksagungen

Vielen Dank an die Forrst-Community, die die ersten (sehr) groben Entwürfe dieses Beitrags gesehen und viele aufschlussreiche Kommentare beigesteuert hat. Besonderer Dank geht an @chriscoyier, @caludio, @steerpike und @mattthehoople für die direkte Mitarbeit an der Richtlinienliste und an alle anderen Forrst-Kommentatoren für die hilfreiche Diskussion.

Vielen Dank an meinen Vater für das Korrekturlesen und die Überprüfung! Vielen Dank auch an Chris, der so freundlich war, anzubieten, dies auf CSS Tricks zu veröffentlichen!