Ich habe eine Menge Diskussionen über URL-Routing und viele großartige Vorschläge gesehen ... aber in der realen Welt habe ich eine Sache noch nicht besprochen:
Angenommen, Sie erstellen eine medizinische Website mit Artikeln mit einer Kategorie und einer optionalen Unterkategorie . (1 zu viele). ( Könnte irgendein Beispiel benutzt haben, aber das medizinische Feld hat viele lange Wörter )
In einer Struktur wie dieser werden Sie einige LOOONG URLs haben, wenn Sie gehen: / {Kategorie} / {Unterkategorie} / {Artikeltitel}
Außerdem gibt es zahlreiche ungültige Zeichen , wie #! ? "é" usw.
Hinweis: Ich sehe immer nette hübsche Beispiele wie / Produkte / Getränke / Short-Product-Name / wie wäre es mit einigen hässlichen Beispielen? ^ _ ^
Ich selbst bevorzuge es - aus Gründen der Lesbarkeit (Sie unterstreichen es und das _
ist virtuell go_away), wenn Sie Leerzeichen entfernen wollen.
Sie können versuchen, erweiterte Zeichen, dh, u, wenn möglich, auf Close-Ascii-Elemente zu werfen, dh:
ü - & gt; Du
Nach meiner Erfahrung ist das größte Problem mit tatsächlichen SEO-Problemen jedoch nicht, dass die URL den ganzen schönen Text enthält, nämlich dass den Text in ändert Der Link, all Ihre SEO-Arbeit wird zu Mist, weil Sie jetzt DEADLINKS in den Indizes haben.
Dafür würde ich vorschlagen, was stackoverflow macht, und einen numerischen Teil haben, der auf eine konstante Entität verweist, und den Rest des Textes vollständig ignorieren (und / oder ihn aktualisieren, wenn er falsch ist)
Auch die grob herichichiale Natur macht nur eine schlechte Usability für den Menschen aus. Menschen hassen lange URLs. Kopieren Sie es einfügen saugt und sie sind eher anfällig für brechen. Wenn Sie es in niedrigere Teir unterteilen können, dh
%Vor%Auf diese Weise ist die einzige Zeit, die Sie Voodoo-Magie tun müssen, wenn der nummerierte Artikel gelöscht wurde, zu welcher Zeit Sie den Textteil als Suchzeichenfolge verwenden, um zu versuchen, den echten Artikel zu finden etwas wie es.
Mein letzter Ansatz ist:
Was die Speicherung betrifft, so glaube ich, dass die freundliche URL in die Datenbank gehen und unveränderlich sein sollte, nachdem alle coolen URIs nicht ' t ändern
Lösung 2 ist der typische Ansatz von denen ... einige Verfeinerungen möglich sind, z. Apostrophe in Nichts verwandeln statt in einen Bindestrich, für Lesbarkeit. In der Regel möchten Sie die Version des Titels, der auf URLs geprüft wird, in der Datenbank sowie den "echten" Titel speichern, damit Sie das Element mit einer indizierten SELECT WHERE auswählen können.
Jedoch. In einem URL-Pfad-Teil befindet sich kein tatsächliches ungültiges Zeichen, solange Sie es entsprechend codieren. Zum Beispiel kann ein Leerzeichen, ein Hash oder ein Schrägstrich als% 20,% 23 oder% 2F codiert werden. Auf diese Weise ist es möglich, irgendeinen String in einen URL-Teil zu codieren, so dass Sie ihn mit einem tatsächlichen, unveränderten Titel aus der Datenbank AUSWÄHLEN können.
Je nach Ihrem Web-Framework gibt es jedoch einige potenzielle Probleme. Zum Beispiel ist alles, was auf CGI basiert, nicht in der Lage, den Unterschied zwischen einem codierten% 2F und einem echten / zu erkennen, und einige Frameworks / Bereitstellungen können Schwierigkeiten mit Unicode-Zeichen haben.
Alternativ kann eine einfache und sichere Lösung darin bestehen, den Primärschlüssel in die URL einzufügen, wobei die betitelten Teile lediglich dazu verwendet werden, die Adresse schöner zu machen. zB:
%Vor%So wird zB. Amazon macht es. Es hat den Vorteil, dass Sie den Titel in der Datenbank ändern können und die URL mit dem alten Titel automatisch auf die neue umleiten kann.
Falls jemand interessiert ist. Dies ist die Route (oooh ... punny) Ich nehme:
%Vor%Dies bietet mir die Möglichkeit, URLs so zu machen:
Beim Reinigen von URLs verwende ich eine Methode, die akzentuierte Zeichen ersetzt:
%Vor%Ich weiß nicht, ob es der effizienteste Regex ist, aber es ist sicherlich effektiv. Es ist eine Erweiterungsmethode, um es so zu nennen, dass Sie die Methode einfach in eine statische Klasse einfügen und so etwas tun:
%Vor%Natürlich könnten Sie es in eine Methode namens "CleanUrl" oder etwas kombinieren, aber das liegt an Ihnen.
Als Follow-up. Ich habe ein paar Ideen. Also, zögern Sie nicht, die Ideen zu kommentieren oder geben Sie Ihre eigene Antwort auf die Frage:
Lösung # 1: Ersetzen Sie alle ungültigen Zeichen durch Bindestriche:
Das sieht ein bisschen hässlich für mich aus ...
Lösung # 2: Entfernen Sie ungültige Zeichen und ersetzen Sie Leerzeichen durch einzelne Striche:
Lösung # 3 Wenden Sie einige Regeln an, um bestimmte Zeichen durch Wörter zu ersetzen:
Lösung # 4 Entfernen Sie alle Leerzeichen und verwenden Sie Groß- / Kleinschreibung
(funktioniert möglicherweise nicht auf Groß- und Kleinschreibung und ist schwer zu lesen)
Normalerweise mache ich nur legalen Charakter und halte die freundliche URL so kurz wie möglich. Wichtig ist auch, dass freundliche URLs oft von Menschen eingefügt werden. Ich erzeuge nie eine freundliche URL aus Titel oder Inhalt und benutze diese dann, um die Datenbank abzufragen. Ich würde eine Spalte in einer Tabelle verwenden, z. friendly_url, damit der Website-Administrator freundliche URLs einfügen kann.
Ich habe dieses Problem gelöst, indem ich eine zusätzliche Spalte in der Datenbank hinzugefügt habe (z. B. "UrlTitle" neben der Spalte "Titel") und einen Titel mit allen ungültigen Zeichen mit "& amp;" Symbole durch "und" ersetzt, und Leerzeichen durch Unterstriche ersetzt. Dann können Sie über das UrlTitle nachschlagen und das echte im Seitentitel oder wo auch immer verwenden.
Ich schlage vor, zu tun, was Wordpress tut - kleine Wörter ausstreichen und illegale Zeichen mit Bindestrichen (maximal 1 Bindestrich) neu erstellen, dann lassen Sie den Benutzer die URL korrigieren, wenn sie möchten. Es ist besser für SEO, die URL konfigurierbar zu machen.
Als Client-Benutzer, nicht als Web-Designer, finde ich, dass Firefox manchmal die URL bricht, wenn versucht wird, "illegale" Zeichen durch verwendbare zu ersetzen. Zum Beispiel ersetzt FF ~ durch% 7E. Das lädt mich nie. Ich kann nicht verstehen, warum die HTML-Editoren und -Browser nicht einfach zustimmen, keine anderen Zeichen als A-Z und 0-9 zu akzeptieren. Wenn bestimmte Skripts%,? Usw. benötigen, ändern Sie die Skriptanwendungen so, dass sie mit alphanumerischen Zeichen arbeiten.