URL-Routing: Behandeln von Leerzeichen und unzulässigen Zeichen beim Erstellen benutzerdefinierter URLs

8

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:

  1. Erstellen von Friendly-URLs mit Leerzeichen und unzulässigen Zeichen
  2. Abfragen der Datenbank

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 )

Beispielkategorien / Unter / Artikelstruktur:

  1. Ihre allgemeine Gesundheit (Kategorie)
    • Natürliche Gesundheit (Unterkategorie)
      1. Das Immunsystem Ihres Körpers und warum es Hilfe braucht. (Artikel)
      2. Sind Pflanzen und Kräuter wirklich die Lösung?
      3. Sollte ich angereicherte Lebensmittel essen?
    • Homöopathische Medizin
      1. Was ist homöopathische Medizin?
    • Gesundes Essen
      1. Sollten Sie 10 Tassen Kaffee pro Tag trinken?
      2. Sind Bio-Gemüse es wert?
      3. Ist Burger King® böse?
      4. Ist "französisches Café" oder amerikanischer Kaffee gesünder?
  2. Krankheiten & amp; Bedingungen (Kategorie)
    • Autoimmunerkrankungen (Unterkategorie)
      1. Der # 1-Killer von Menschen ist eine Krankheit
      2. Wie Sie Hilfe bekommen
    • genetische Bedingungen
        Spina Bifida vor der Schwangerschaft zu verhindern.
      1. Sind Sie für eine lange Zeit prädisponiert?
  3. Dr. FooBars persönliche Vorschläge (Kategorie)
    1. Meine Gedanken zu Kräutermedizin & amp; natürliche Heilmittel (Artikel - keine Unterkategorie)
    2. Warum sollten Sie sich um Ihre Gesundheit kümmern?
    3. Es ist möglich, richtig zu essen und sich gut zu ernähren.
    4. Ist unblutige Operation erwachsen geworden?

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.

SO, die Frage (n) lautet:

  1. Wie würdest du mit illegalen Charakteren und Spaces umgehen? (Vor- und Nachteile?)
  2. Würden Sie das aus der Datenbank holen?
    • Mit anderen Worten, würden Sie der DB vertrauen, das Objekt zu finden, den Titel übergeben, oder alle Titel ziehen und den Schlüssel im Code finden, um den Schlüssel zu erhalten an die Datenbank übergeben (zwei Aufrufe an die Datenbank)?

Hinweis: Ich sehe immer nette hübsche Beispiele wie / Produkte / Getränke / Short-Product-Name / wie wäre es mit einigen hässlichen Beispielen? ^ _ ^

    
Armstrongest 05.11.2008, 21:16
quelle

11 Antworten

4

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.

    
Kent Fredric 05.11.2008, 22:02
quelle
4

Mein letzter Ansatz ist:

  1. Konvertiere alle "seltsamen Buchstaben" in "normale Buchstaben" - & gt; à bis a, ñ bis n usw.
  2. Konvertiere alle Nicht-Wort-Zeichen in _ (d. h. nicht a-zA-Z0-9)
  3. ersetzt Gruppen von Unterstrichen durch einen einzelnen Unterstrich
  4. Entferne alle Tailing- und führenden Unterstriche

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

    
alex 05.11.2008 21:34
quelle
1

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.

    
bobince 05.11.2008 21:45
quelle
1

Falls jemand interessiert ist. Dies ist die Route (oooh ... punny) Ich nehme:

%Vor%

Dies bietet mir die Möglichkeit, URLs so zu machen:

  • site.com/ca/en/Article/123/my-life-and-health
  • site.com/ca/en/Section/12-3/Health-Issues
  • site.com/ca/en/Section/12/
Armstrongest 07.11.2008 09:00
quelle
1

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.

    
Armstrongest 07.11.2008 21:53
quelle
0

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:

  • www.mysite.com/diseases --- conditions / Autoimmunkrankheiten / der - 1-Killer-of-people-is-some-disease /

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:

  • www.mysite.com/disease-conditions/Auto-immun-disorder/the-1-killer-of-people-is-some-disease /

Lösung # 3 Wenden Sie einige Regeln an, um bestimmte Zeichen durch Wörter zu ersetzen:

  • www.mysite.com/disease-and-conditions/Auto-immune-disorders/the-number1-killer-of-people-is-some-disease /

Lösung # 4 Entfernen Sie alle Leerzeichen und verwenden Sie Groß- / Kleinschreibung

  • www.mysite.com/DiseasesAndConditions/AutoImmuneDisorders/TheNumber1KillerOfPeopleIsSomeDisease /

(funktioniert möglicherweise nicht auf Groß- und Kleinschreibung und ist schwer zu lesen)

    
Armstrongest 05.11.2008 21:17
quelle
0

Lösung 2 wäre meine Empfehlung. Ich bin nicht der weltweit größte SEO-Experte, aber ich glaube, es ist so ziemlich der "Standard" Weg, gute Rankings zu bekommen.

    
da5id 05.11.2008 21:25
quelle
0

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.

    
Arief 05.11.2008 21:27
quelle
0

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.

    
Nick 05.11.2008 21:35
quelle
0

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.

    
Dobes Vandermeer 05.11.2008 21:49
quelle
0

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.

    
Lance 30.05.2009 09:31
quelle

Tags und Links