URL-Routing:Leerzeichen und Illegale Zeichen Beim Erstellen von Freundlichen URLs
Frage
Ich habe gesehen, eine Menge Diskussion über URL-Routing und VIELE tolle Anregungen...aber in der realen Welt, eine Sache habe ich nicht gesehen werden diskutiert:
- Erstellen-Freundliche URLs mit Leerzeichen und illegale Zeichen
- Abfragen der DB
Sagen Sie, Sie erstellen eine Medizinische Website, Artikel mit einem Kategorie und optional Unterkategorie.(1 bis viele).( Könnte verwendet habe, jedem Beispiel, aber der medizinische Bereich hat viele lange Wörter)
Beispiel Categories/Sub/Artikel Struktur:
- Ihre Allgemeine Gesundheit (Kategorie)
- - Natürliche Gesundheit (Unterkategorie)
- Das Immunsystem Ihres Körpers und warum braucht es Hilfe. (Artikel)
- Sind Pflanzen und Kräuter wirklich die Lösung?
- Sollte ich Essen, angereicherte Lebensmittel?
- Homöopathische Medizin
- Was ist Homöopathische Medizin?
- Gesunde Ernährung
- Trinken, sollten Sie 10 Tassen Kaffee pro Tag?
- Sind Bio-Gemüse lohnt sich das?
- Ist Burger King® böse?
- Ist "French café" oder amerikanischen Kaffee gesünder?
- - Natürliche Gesundheit (Unterkategorie)
- Krankheiten & Bedingungen (Kategorie)
- Auto-Immun-Erkrankungen (Unterkategorie)
- Die #1 killer von Menschen ist eine Krankheit
- Wie Sie Hilfe bekommen
- Genetische Bedingungen
- Verhindert Spina Bifida schon vor der Schwangerschaft.
- Sind Sie anfällig für eine lange Zeit Leben?
- Auto-Immun-Erkrankungen (Unterkategorie)
- Dr.FooBar ' s persönliche Empfehlungen (Kategorie)
- Meine Gedanken auf Herbal medicine & natural remedies (Artikel - keine Unterkategorie)
- Warum sollten Sie sich sorgen über Ihre Gesundheit?
- Es IST möglich, richtig zu Essen und eine gute Ernährung.
- Hat unblutige Operation kommen des Alters?
In einer Struktur wie dieser, sind Sie gehen zu müssen einige LAAANGE URLs wenn Sie gehen:/{Category}/{subcategory}/{Article Title}
Darüber hinaus gibt es zahlreiche unzulässige Zeichen, wie # !?'é" etc.
ALSO, die FRAGE(N):
- Wie würden Sie behandeln die illegalen Zeichen und Leerzeichen?(Vor-und Nachteile?)
- Würden Sie Griff immer diese aus der Datenbank
- In anderen Worten, würden Sie Vertrauen in die DB zu finden das Element, vorbei an den Titel oder ziehen Sie alle Titel und finden Sie die key-in-code zu erhalten, den Schlüssel zu übergeben, um die Datenbank (zwei Aufrufe an die Datenbank)?
Hinweis:Ich sehe immer schöne hübsche Beispiele wie /Produkte/Getränke/Short-Product-Name/ wie über den Umgang hässliche Beispiele ^_^
Lösung
Ich selbst bevorzuge _ - für aus Gründen der Lesbarkeit ( setzen Sie einen Unterstrich und der _
's praktisch go_away ) , wenn Sie gehen zu strip-Räume.
Möchten Sie vielleicht, um zu versuchen, casting erweiterte Zeichen, ie, ü , zu schließen-ascii-equivelants, wo möglich, dh:
ü -> u
Jedoch in meiner Erfahrung das größte problem mit Tatsächliche SEO-bezogenen Probleme, ist nicht, dass die URL enthält all die schönen text, sein, dass, wenn die Menschen ändern der text in die Verknüpfung ein, alle Ihre SEO-Arbeit dreht sich um Mist, weil Sie jetzt haben DEADLINKS in die Indizes.
Für diese würde ich raten, was stackoverflow tun, und einen numerischen Teil, welcher sich auf eine Konstante Einheit, und völlig ignorieren, der rest des Textes ( und/oder aktualisieren, wenn seine falsch )
Auch die grob hericichial Natur macht einfach nur für schlechte Nutzbarkeit durch den Menschen.Menschen hassen lange urls.Kopieren und einfügen Sie saugt und Sie sind einfach anfälliger für das brechen sind.Wenn Sie können, unterteilen Sie es in die untere teirs, ie
/article/1/Some_Article_Title_Here
/article/1/Section/5/Section_Title_Here
/section/19023/Section_Title_here ( == above link )
Dass übrigens die einzige Zeit, die Sie brauchen, um zu tun, voodoo-Magie ist, wenn das gezählte Artikel ist eigentlich hat gelöscht wurden, auf die Zeit, die Sie verwenden, den text als eine Zeichenkette zu versuchen finden Sie die wahre Artikel oder etwas ähnliches.
Andere Tipps
Mein letzter Ansatz ist:
- Wandeln Sie alle "fremden Buchstaben" auf "normalen Buchstaben" -> a zu a, ñ bis n, usw. .
- Wandeln Sie alle Nicht-Wort-Zeichen _ (das heißt nicht a-zA-Z0-9)
- ersetzen Gruppen von Unterstrichen mit einem einzigen Strich
- Entfernen Sie alle Tailing und führenden Unterstrichen
Falls jemand interessiert ist. Dies ist der Weg (oooh ... punny) Ich nehme:
Route r = new Route("{country}/{lang}/Article/{id}/{title}/", new NFRouteHandler("OneArticle"));
Route r2 = new Route("{country}/{lang}/Section/{id}-{subid}/{title}/", new NFRouteHandler("ArticlesInSubcategory"));
Route r3 = new Route("{country}/{lang}/Section/{id}/{title}/", new NFRouteHandler("ArticlesByCategory"));
Das bietet mir die Möglichkeit, URLs zu tun, etwa so:
- 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 /
Wenn URLs Reinigung, hier ist eine Methode, die ich akzentuierte Zeichen ersetzen bin mit:
private static string anglicized(this string urlpart) {
string before = "àÀâÂäÄáÁéÉèÈêÊëËìÌîÎïÏòÒôÔöÖùÙûÛüÜçÇ’ñ";
string after = "aAaAaAaAeEeEeEeEiIiIiIoOoOoOuUuUuUcC'n";
string cleaned = urlpart;
for (int i = 0; i < avantConversion.Length; i++ ) {
cleaned = Regex.Replace(urlpart, before[i].ToString(), after[i].ToString());
}
return cleaned;
// Here's some for Spanish : ÁÉÍÑÓÚÜ¡¿áéíñóúü"
}
Sie wissen nicht, ob es die effizienteste Regex ist, aber es ist sicherlich wirksam. Es ist eine Erweiterung Methode, so dass es rufen Sie einfach die Methode in einer statischen Klasse setzen und tun somthing wie folgt aus:
string articleTitle = "My Article about café and the letters àâäá";
string cleaned = articleTitle.anglicized();
// replace spaces with dashes
cleaned = Regex.Replace( cleaned, "[^A-Za-z0-9- ]", "");
// strip all illegal characters like punctuation
cleaned = Regex.Replace( cleaned, " +", "-").ToLower();
// returns "my-article-about-cafe-and-the-letters-aaaa"
Natürlich kann man es in einem Verfahren namens „CleanUrl“ oder etwas, aber das ist bis zu Ihnen kombinieren könnte.
Als Follow-up. Ich habe einige Ideen. So fühlen sich frei auf den Ideen zu kommentieren oder geben Sie Ihre eigene Antwort auf die Frage:
Lösung 1: Ersetzen Sie alle ungültigen Zeichen mit Bindestrichen:
- www.mysite.com/diseases --- Bedingungen / Auto-Immun-Erkrankungen / der - 1-Killer-of-Personen-is-some-Krankheit /
Das sieht ein wenig hässlich zu mir ...
Lösung 2: Strip ungültige Zeichen und ersetzen Räume mit einzelnen Strichen:
- www.mysite.com/diseases-conditions/Auto-immune-disorders/the-1-killer-of-people-is-some-disease /
Lösung # 3, ein paar Regeln gelten für bestimmte Zeichen mit Worten ersetzen:
- www.mysite.com/diseases-and-conditions/Auto-immune-disorders/the-number1-killer-of-people-is-some-disease /
Lösung # 4 Streifen Alle Räume und Verwendung Kapitalisierung
- www.mysite.com/DiseasesAndConditions/AutoImmuneDisorders/TheNumber1KillerOfPeopleIsSomeDisease /
(Mai nicht gut auf Groß- und Kleinschreibung Servern arbeitet und ist schwer zu lesen)
Lösung 2 würde meine Empfehlung sein. Ich bin nicht der größte SEO-Experte Welten, aber ich glaube, es ist so ziemlich die ‚Standard‘ Art und Weise ohnehin gute Platzierungen zu erhalten.
Was ich tue, ist normalerweise nur rechtlichen Charakter und halten Sie die freundliche URL so kurz wie möglich zu ermöglichen. Wichtig ist auch, dass freundliche URLs oft durch menschliche eingeführt werden, habe ich nie eine freundliche URL aus dem Titel oder Inhalt, erzeugen und dann, dass man verwenden, um die Datenbank abzufragen. Ich würde eine Spalte in einer Tabelle verwenden, z.B. friendly_url, so dass die Website Admin kann URLs einfügen.
Ich löste dieses Problem, indem eine zusätzliche Spalte in der Datenbank hinzugefügt (zum Beispiel: UrlTitle neben dem Spalte Titel) und Speicher einen Titel mit allen ungültigen Zeichen beraubt ‚&‘ Symbole ersetzt mit ‚und‘ und Leerzeichen durch Unterstriche ersetzt. Dann können Sie über die UrlTitle Nachschlag und die realen in den Seitentiteln verwenden oder wo auch immer.
Ich schlage vor, zu tun, was Wordpress hat - kleine Worte Streifen aus und ungültige Zeichen mit Bindestrichen (max 1 Bindestrich) REPLCE dann lassen die Benutzer die URL korrigieren, wenn sie wollen. Es ist besser für SEO die URL konfigurierbar zu machen.
Als Client-Benutzer, nicht ein Web-Designer, finde ich Firefox manchmal die URL bricht, wenn er versucht, „illegal“ Zeichen mit nutzbaren zu ersetzen. Beispielsweise ersetzt FF ~ mit% 7E. Das nie lädt für mich. Ich kann nicht verstehen, warum die HTML-Editoren und Browser einfach nicht einverstanden sind nicht die Zeichen A-Z und 0-9 zu akzeptieren. Wenn bestimmte Skripte% benötigen,?, Und solche, die Scripting-Anwendungen ändern, damit sie mit alphanumerischer arbeiten.