WordPress Permalink Struktur ändern ohne Google zu ärgern

Besucherfreundliche und vor allem Suchmaschinenfreundliche URLs sind wichtig, zum einen um den Besucher nicht mit komischen Zeichenketten wieder zu verjagen und andererseits um seinen PageRank bei Suchmaschinen wie Google, Bing, Yahoo und Co zu verbessern.

Permalinks

Was aber tun, wenn schon viele Einträge vorhanden sind und diese bereits im Index der Suchmaschinen gelandet sind? Vielleicht hat man bereits einen guten PageRank oder will seinen derzeitigen nicht verlieren. Das Problem ist, das nicht sofort alle Seiten neu von den Suchmaschinen durchsucht werden, und somit veraltete Links in den Suchergebnissen stehen. Das wird von allen Suchmaschinen sofort bestraft und der Besuchertraffic geht flöten.

Mit diesem Problem hab ich mich heute auseinandergesetzt. Zum einen möchte ich meine URLs verändern, zum anderen meinen derzeitigen PageRank nicht verlieren. Die Permalinks in WordPress zu ändern ist einfach: Im Adminbereich unter Einstellungen – Permalinks einfach gewünschte Variante auswählen.

Was sind gute URLs?

Meine derzeitige URL Struktur ist die Standard Einstellung von WordPress gewesen. Das ganze sieht dann so aus:

http://www.gironimo.org/2010/10/blog-eintrag/

Das Datum anzugeben, könnte vor allem Besucher abschrecken und meinen lassen das der Artikel völlig veraltet ist und deswegen erst gar nicht angeklickt werden muss. Wichtiger ist doch viel mehr unter welche Kategorie der Eintrag erschienen ist. Der Besucher erkennt sofort womit der Blog post zu tun hat.

Der zweite und aus der SEO Sicht wichtigere Punkt: Dynamische Seiten werden schlechter in den Index aufgenommen als Statische Seiten. Aus diesem Grund hab ich mich dafür entschieden, hinter dem jeweiligen Eintrag in der URL, .html anzuhängen.

Meine Struktur ist demnach nun

http://www.gironimo.org/kategorie/blog-eintrag.html

Wie gesagt das zu ändern ist einfach, aber was mache ich damit von den alten URLs direkt auf die neuen weitergeleitet wird.

Permalink Redirect

Man könnte mit Regulären Ausdrücken arbeiten und diese in die .htaccess schreiben, was aber viel Arbeit ist und bei über 80 Artikeln mir zu umständlich war.

Aber dann fand ich das sehr hilfreiche Permalinks Migration Plugin for wordpress, das einem die ganze Arbeit abnimmt. Die Konfiguration ist simpel und funktioniert unter der neuesten WordPress Version 3.0.1 anstandslos. Allerdings mit einer kleinen Ausnahme. Im Sourcecode des Plugins findet sich ein kleiner, gemeiner Fehler, der eventuell 404 Fehler Seiten zur Folge hat. Durch die Freiheit von Open-Source soll uns das aber egal sein, und wir fixen das eben selbst 🙂

Öffnet die PHP Datei mit einem Texteditor und sucht die Funktion dean_pm_post_rewrite_rules($rules) und ändern diese wie folgt ab.

function dean_pm_post_rewrite_rules($rules)
{
    global $wp_rewrite;
    global $dean_pm_config;
    $oldstruct = $dean_pm_config['oldstructure'];
    if ($oldstruct != NULL && $oldstruct != $wp_rewrite->permalink_structure)
    {
        $dean_pm_config['rewrite'] = $wp_rewrite->generate_rewrite_rules($oldstruct, false, false, false, true);
        update_option("dean_pm_options",$dean_pm_config);
        if ($dean_pm_config ['highpriority'] == true)
        {
            return array_merge($dean_pm_config['rewrite'],$rules);
        }
        else
        {
            return array_merge($rules, $dean_pm_config['rewrite']);
        }
    }
    return $rules;
}

Es hat sich nicht viel am Code geändert, genauer gesagt wurde an ein Wort nur ein Buchstabe angehängt. Der Fehler liegt hier:

$wp_rewrite->generate_rewrite_rule($oldstruct, false, false, false, true);

Allerdings fehlt nach dem rule ein s. Also einfach das Plural bilden 😉 In der Plugin/API Referenz von WordPress findet ihr zu der Funktion mehr Informationen.

$wp_rewrite->generate_rewrite_rules($oldstruct, false, false, false, true);

Nach der Änderung das Plugin aktivieren und in den Einstellungen des Plugins die derzeitige Permalink Struktur angeben. Nachdem das Plugin nun weiß wie die derzeitige Struktur der Permalinks ist, kann es ganz einfach Redirects anlegen und uns somit viel Arbeit abnehmen. Nun einfach ohne Bedenken in den Permalinks Einstellungen von WordPress die neue Struktur einstellen und glücklich sein.