Laden...

ASP.net 4.0 - Suchmaschinenfreundliche URLs

Erstellt von ravel vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.250 Views
R
ravel Themenstarter:in
169 Beiträge seit 2007
vor 12 Jahren
ASP.net 4.0 - Suchmaschinenfreundliche URLs

Hi,

ich habe folgende Quelle genutzt um suchmaschinenfreundliche URLs zu erstellen mittels URL-Routing.
URL Routing with ASP.NET 4 Web Forms

Page.GetRoutUrl gibt einem ja anhand von Parametern eine suchmaschinenfreundliche URL zurück. Die Sache ist nur die: Wenn der Parameter Leerzeichen enthält, wird daraus richtigerweise ein "%20" gemacht, damit die Browser damit auch was anfangen können. z.B. seite.de/rotes%20Auto/

Kann ich die URLs aus SEO-Sicht so lassen oder sollte ich selbst noch handanlegen und z.B. Leerzeichen, Sondernzeichen und Umlaute ersetzen, damit die URL "lesbarer" wird? z.B. seite.de/rotes-Auto/ (Leerzeichen durch Bindestrich ersetzt)

Was gefällt Google und Co und dem Benutzer lieber?

In Firefox wird die URL mit Leerzeichen angezeigt in der Adressleiste. In IE9 und Chrome wird der %20-Platzhalter verwendet.

2.891 Beiträge seit 2004
vor 12 Jahren

Aus Benutzersicht würde ich die URLs anpassen (fragt sich nur, wie du das anstellen willst - du brauchst ja auch den "Rückweg", damit deine Actions die Parameter verarbeiten können). Also Bindestriche statt Leerzeichen.

Google behandelt Bindestriche wie Leerzeichen. Unterstriche werden allerdings als "richtiger Buchstabe" (nicht als Leerraum) interpretiert.

5.941 Beiträge seit 2005
vor 12 Jahren

Salute ravel

Leerzeichen gibt es so nicht in der Url, ausser das korrekt codierte %20 vom IE.
Ich würde - wie es so üblich ist - Bindestriche verwenden um nicht nur Leerzeichen, sondern auch Sonderzeichen (Umlaute, Symbole, ...) Url-freundlich zu machen.

Machen kannst du das einfach gesagt, indem du die Links die generiert werden, sowie das was erwartet wird, durch eine Funktion laufen lässt.

Bspw.:


public static string GetCleanUrl(string dirtyUrl) {
    if (dirtyUrl == null)
        return String.Empty;

    string allowedChars = "abcdefghijklmnopqrstuvwxyz1234567890-_";
    dirtyUrl = dirtyUrl.ToLower();
    dirtyUrl = dirtyUrl.Replace("\x00e4", "ae");
    dirtyUrl = dirtyUrl.Replace("\x00fc", "ue");
    dirtyUrl = dirtyUrl.Replace("\x00f6", "oe");
    dirtyUrl = dirtyUrl.Replace(" ", "-");

    StringBuilder cleanUrl = new StringBuilder();
    int i = 0;
    int length = dirtyUrl.Length;
    while (i < length) {
        char c = dirtyUrl[i];
        if (allowedChars.IndexOf(c) > -1) {
            cleanUrl.Append(c);
        }
        i++;
    }
    return cleanUrl.ToString();
}

Das wäre jetzt ein Whitelist-Verfahren, ziemlich simpel aber ausreichend.

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011