Hin und wieder kommt es vor, dass sich einzelne URLs ändern und man gezwungen ist, auf eine automatische Weiterleitung auf die neue URL zurückzugreifen. Wichtig vor allem, wenn die alte URL noch erreichbar ist, um den so genannten Double Content zu vermeiden, der dazu führt, dass die Suchmaschinen sich für die in ihren Augen richtige URL entscheiden, was oft nicht die gleiche Sichtweise des Webmasters darstellt.
Diese Problematik wurde vor Kurzem in meinem Blog aktuell, als ich im Zuge der Tagcloud Erweiterung auch einige Änderungen an den Kategorien beziehungsweise der entsprechenden Beitragszuordnung vornahm. Da ich die Kategorie in meinen Beiträgen in die URL eingebunden habe, ändert sich logischerweise bei einer Änderung der Kategorie auch die entsprechende URL.
Wordpress gibt in einem solchen Fall aber keinen 404 Fehler für die entsprechende Beitrags URL aus, sondern zeigt die alte URL ebenso wie die neue URL fehlerfrei an. Da blieb mir natürlich nichts anderes übrig, als auf die automatische Weiterleitung der einzelnen URLs zurückzugreifen. Plugin war dazu keines notwendig, denn es handelte sich nur um eine Handvoll URLs, das ist schnell und einfach manuell erledigt.
Generell gibt es für die automatische Weiterleitung von URLs wie auch Domains mehrere Möglichkeiten:
<meta http-equiv="refresh" content="0; url=http://www.neue-adresse.tld/">
Von dieser automatischen Weiterleitung kann nur abgeraten werden, vor allem wenn der content etwas anderes als 0 sein soll (Zeit in Sekunden nach der die Umleitung erfolgen soll). Diese Form der Weiterleitung wurde in der Vergangenheit oft zur Manipulation von Suchmaschinenergebnissen missbraucht, so dass einer solchen Lösung oft im Handumdrehen eine Abstrafung folgt.
header("Location: http://www.neue-adresse.tld/",TRUE,301);
Diese automatische Weiterleitungsmöglichkeit (Der Status Code 301 steht übrigens für „permanenten Umzug“) ist zwar hervorragend geeignet URLs umzuleiten, doch in meinem Fall für einzelne Wordpress Beiträge nicht einfach zu implementieren.
Redirect Permanent oder mit einer Rewrite Rule zu arbeiten, um einzelne URLs, wie auch die gesamte Domain umzuleitenDie einfachste Möglichkeit meine alten Beitrags URLs auf die neuen URLs einzeln automatisch umzuleiten ist die über die htaccess. Ob nun mit dem Redirect Permanent, welcher automatisch den Status Code 301 beinhaltet, gearbeitet wird, oder entsprechende Rewrite Rules erstellt werden, ist reine Geschmackssache:
Redirect permanent /alte-seite.html http://www.domain.tld/ordner/neuer-beitrag.html
oder
RewriteRule alte-seite.htm$ http://www.domain.tld/neue-seite.html [L,R=301]
[...] Bei crazytoast.de wird 301 redirect noch ausführlicher beschieben (zum Artikel). [...]
ich wunder mich gerade, wo wordpress diese daten speichert. nach einem update auf eine neue version habe ich z. b. das “index.php” in der url nicht mehr mitgeschleift, alle google-links funktionieren aber noch, weil automatisch auf die neue url geleitet wird. gleiches bei trackbacks, wenn die url inzwischen geändert wurde. das muss dann doch irgendwo in der datenbank mitgeführt werden, woher weiß wp das sonst? weißt du das zufällig?
danke für die wertvollen beiträge zu diesem thema!
@limone: Im Normalfall passiert das mit dem entsprechenden Eintrag in der htaccess. Oder hast Du ein Plugin für die Weiterleitung installiert?
nein, hab ich nicht, es muss also die htaccess sein. aber die führt doch eigentlich nicht jede änderung an einzelnen beiträgen mit? zumindest steht nur die globale änderung der permalinkstruktur drin (/index.php/ rausgenommen) in der htaccess, aber nicht, wenn ich den link eines einzelnen postings ändere. außer ich trage das manuell ein, wie du es hier im beitrag beschrieben hast.
den tipp aus deinem anderen kommentar probier ich gleich mal aus, vielen dank!
Der globale Eintrag in der htaccess sorgt dafür, dass die URLs nicht mehr mit ?irgendwas generiert werden, sondern so wie Du es unter Permalinks in den Einstellungen angegeben hast.
Probier bitte mal den Tipp von mir mit dem kleinen Zusatz in der htaccess und sag dann kurz Bescheid, ob jetzt per 301 weitergeleitet wird. Ich vermute dass das dort alles so passiert, aber ganz sicher bin ich mir nicht.