Wer einen Umzug von einem alten CMS (Content Management System) zu WordPress vollzieht, wird vor dem Problem stehen, dass die Links, die bisher zu den einzelnen Seiten zeigen, nicht mehr passen. Selbst wenn vorher schon Permalinks definiert waren und diese nach WordPress migriert wurden, passt der Link nicht unbedingt.
Wir wollen also erreichen, dass alle Seiten, die bisher mit dem alten Link verlink waren, nach wie vor erreichbar sind. Aus suchmaschinengründen wollen wir keinen doppelten Content erzeugen (Seite unter dem alten und neuen Link erreichbar), sondern möchten per „Redirect 301“ der Suchmaschine zeigen, dass die bisherige Seite einen neuen Link hat. Ein User merkt davon nichts, er wir einfach zur neuen Seite weitergeleitet.
In folgendem Beispiel nehmen wir folgendes an:
- Die bisherigen Permalinks lauteten domaine.de/artikel/mein_premalink_mit_unterstrich_getrennt.htm
- Die neuen Permalinks in WordPress lauten domain.de /kategorie/permalinks-mit-Bindestrich-getrennt.html
- Die IDs der Artikel bzw. Posts haben sich bei der Migration geändert
- Der Permalink wurde bei der Migration in die WordPress-Datenbank (Tabelle: „wp_posts“) im Feld „post_name“ übernommen; der Unterstrich („_“) wurde durch ein Bindestrich („-„) ersetzt
Zur Erklärung
Die bisherigen Permalinks waren falsch oder zumindest „suboptimal“. Nach wie vor geht die Literatur davon aus, dass Suchmaschinen wie Google Wörterketten, die mit einem Unterstrich getrennt sind, als ein Wort betrachtet. Somit macht der Permalink „keyword1_keyword2“ keinen Sinn, da die Suchmaschine dies nicht trennt. Richtig wäre wohl „keyword1-keyword2“. Natürlich kann man bis zum jüngsten Tage darüber streiten, wie sinnvoll der Links ist, ob es die Position in den Suchergebnissen beeinflusst und so weiter … Da wir aus anderen Gründen eine Migration vor uns haben, passen wir einfach die Links an.
Wie können wir das Ziel erreichen?
Das Geheimnis liegt wie schon erwähnt in ModRewrite. Dabei handelt es sich um eine Apache-Modul, dass serverseitig URL-Anfragen analysiert und umschlüsselt. Aus SEO-Gründen für eine optimale Suchmaschinenpositionierung wollen wir nicht, dass ModRewrite die Seite unter beiden Links ausliefert. Wir wollen, dass die Seite via „Redirect 301“ weitergeleitet wird.
Dazu passen wir die .htaccess-Datei von ModRewrite an. Diese liegt im Root der WordPress-Installation. Achtung: Je nach Installation wurde die Datei manuell erzeugt, oder WordPress hat das Recht, diese zu generieren. Im zweiten Fall müssen dann die Änderungen via WordPress erzeugt werden, da sonst WordPress die manuelle Änderungen wieder überschreiben würde.
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / Redirect 301 /pfad/alter-link.htm http://www.domain.de/pfad/neuer-link-350.html RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Erklärung
Bei einem Aufruf schaut das Modul ModRewrite die übergebene URL an. Wenn eine Regel oder eine fest codierte URL aufgelistet ist, leitet das Modul die Anfrage an die neue URL weiter und sendet gleichzeitig den Status „301“ an die Anfrager. Ist dies eine Suchmaschine, erkennt diese, dass sich die URL geändert hat und berücksichtigt dies in ihren Suchergebnissen.
Wie wir die ModRewrite-Datei automatisiert einmalig anlegen, erfahrt Ihr im 2. Teil dieses Tutorials.