Tote Links mit Umleitungen vermeiden

In der Phase 3 des Relaunch von dieter-welzel.de (siehe hierzu „Relaunch mit Xtreme One abgeschlossen„), änderte ich die Struktur der permanenten Links (Permalinks) in meiner WordPress-Installation im Verzeichnis blog wie folgt:

  1. Im Administrationsbereich (Backend) habe ich unter Einstellungen -> Allgemein die Blog-Adresse (URL) von http://www.dieter-welzel.de/blog in http://www.dieter-welzel.de geändert und den Button „Änderungen übernehmen“ gedrückt.
  2. Anschließend kopierte ich die Datei aus dem Verzeichnis blog in das Hauptverzeichnis und änderte die Zeile require(‚./wp-blog-header.php‘); in require(‚./blog/wp-blog-header.php‘); um. Ferner kopierte ich die .htaccess-Datei aus dem Verzeichnis blog in das Hauptverzeichnis.
  3. Zum Schluss aktualisierte ich die Struktur der permanenten Links (Permalinks) im Administrationsbereich (Backend) über Einstellungen -> Permalinks, indem ich dort den Button „Änderungen übernehmen“ drückte.

Dadurch waren alle Links in WordPress aktualisiert und wer jetzt noch über einen alten Link mit /blog/ in der URL eine Seite bzw. einen Artikel aufruft, wird permanent zur richtigen URL ohne das Verzeichnis /blog/ weitergeleitet.

Wenn es sich vermeiden lässt, sollte man(n) (Frau auch) die Linkstruktur nicht verändern (siehe hierzu den Artikel Cool URIs don’t change von Tim Berners-Lee, dem Erfinder des Internets). In meinem Fall aber kamen die Webseiten der ursprünglichen statischen Website hinzu und da passte das Verzeichnis blog in der URL nicht. Zudem wollte ich die URL möglichst kurz halten.

Leider funktioniert die Linkstruktur aktualisieren in WordPress nur mit Links, die schon Bestandteil von WordPress waren. Ich hatte aber meine mit PHP-Seiten erstellte Website in meine WordPress-Installation erst integriert. Dabei habe ich einige Seiten zusammengefasst, so dass ich jetzt „nur“ noch auf 71 „statische“ Seiten komme. Damit auch dort Besucher zur richtigen Seite gelangen, richtete ich zusätzlich permanente Umleitungen in der .htaccess-Datei ein. Eine gute Anleitung dazu gibt es unter Automatische Weiterleitung.

Die Ergänzung meiner .htaccess-Datei zeige ich hier beispielhaft an einigen geänderten Links. Zu den möglichen Schreibweisen in der .htaccess-Datei siehe beispielsweise „301 Redirect permanent: welche schreibweise ist richtig?„. Da ich das für alle Links der ursprünglichen Website manuell machen musste, war das leider schon recht arbeitsintensiv. Das ist halt der Nachteil, wenn man viele Seiten umleiten muss und keine allgemein gültige Regel definieren kann. Hier ein Auszug des Codes aus meiner .htaccess:

RedirectPermanent /musik.php http://www.dieter-welzel.de/music/
RedirectPermanent /musiklinks.php http://www.dieter-welzel.de/music/musiklinks/
RedirectPermanent /tauschboersen.php http://www.dieter-welzel.de/music/tauschboersen/
RedirectPermanent /bandaufnahmen.php http://www.dieter-welzel.de/music/bandaufnahmen/
RedirectPermanent /bandaufnahmen-bourbon.php http://www.dieter-welzel.de/music/bandaufnahmen/bourbon/
RedirectPermanent /bandaufnahmen-daryl.php http://www.dieter-welzel.de/music/bandaufnahmen/daryl/
RedirectPermanent /bandaufnahmen-unbekannt-und-ich.php http://www.dieter-welzel.de/music/bandaufnahmen/unbekannt-und-ich/
RedirectPermanent /bandaufnahmen-nighthunter.php http://www.dieter-welzel.de/music/bandaufnahmen/nighthunter/
RedirectPermanent /bandaufnahmen-limiter.php http://www.dieter-welzel.de/music/bandaufnahmen/limiter/

Der entscheidende Vorteil dieses Vorgehens war und ist: Sowohl Besucher als auch Suchmaschinen werden automatisch an die richtige URL weitergeleitet. Die FernUni Hagen scheint sich leider die Mühe nicht zu machen, aber gleichwohl hin und wieder ihre Permalink-Struktur zu ändern. Das finde ich ausgesprochen ärgerlich (siehe hierzu auch meinen Blogartikel „Weiterleitung bei neuem Link„).

Es gibt übrigens auch die Möglichkeit einzelne Webseiten mit einem Meta Tag, mit JavaScript oder mit PHP automatisch weiterzuleiten (siehe hierzu beispielsweise „Automatische Weiterleitung einzelner URLs mit redirect permanent„). Die serverseitige Umleitung mittels .htaccess-Datei hat jedoch Vorteile. So leitet der Server nicht nur weiter, sondern sendet auch einen entsprechenden Statuscode und Besucher bekommen von der Änderung nichts mit (siehe hierzu „Serverseitige Weiterleitung“ im o.g. Artikel „Automatische Weiterleitung„).

17 Kommentare

  1. Crazy Girl sagt:

    Danke für die Erwähnung 🙂
    Und Deine Links bei mir habe ich auch gerade korrigiert.

  2. Crazy Girl sagt:

    *lacht* Fundgrube … Ganz ehrlich, oft schreibe ich Artikel und Tutorials auch für mich, so dass ich immer die entsprechende Anleitung parat habe, wenn ich mal was brauche 😉

    • Dieter sagt:

      Willkommen im Club! 🙂
      Ich schreibe ebenfalls oft Artikel und Tutorials für mich.
      Hatte schon Infos zu einem Thema über Google gesucht und war dann auf einer meiner Seiten fündig geworden. Finde ich erschreckend wie vergesslich man(n) so mit der Zeit wird!

  3. Crazy Girl sagt:

    *ups* so was ist mir noch nie passiert 😉

  4. Gerry sagt:

    Hi,

    muss ich bei der .htaccess noch etwas beachten?
    Bei mir funktioniert die Weiterleitung leider nicht. Hier mal meine aktuelle .htaccess Der dritte Eintrag sollte die Weiterleitung sicherstellen (copy + paste):

    DirectoryIndex index.php

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^keul-goebel.de$ [NC]
    RewriteRule ^(.*)$ http://www.keul-goebel.de/$1 [R=301,L]

    Redirect 301 /Geruestbau/Geruestbau.html http://www.keul-goebel.de/geruestbau-in-koblenz

    • Dieter sagt:

      Gerry, ich bin kein .htaccess-Experte, aber ich würde mal Folgendes probieren:

      Den dritten Eintrag mit Redirect 301 vor RewriteEngine On setzen.

      Wenn das – wider Erwarten – nichts hilft, dann würde ich mal testweise Redirect 301 durch RedirectPermanent ersetzen.

  5. Crazy Girl sagt:

    @Gerry und Dieter: Die Position ist schon okay, aber ich würde entweder

    Redirect permanent /Geruestbau/Geruestbau.html http://www.keul-goebel.de/geruestbau-in-koblenz

    schreiben oder
    RewriteRule ^Geruestbau/Geruestbau.html$ http://www.keul-goebel.de/geruestbau-in-koblenz [L,R=301]

    Bin zwar auch alles andere als ein Experte in Sachen htaccess, aber die zwei Befehle funktionieren bei mir eigentlich immer.

    • Dieter sagt:

      Na, damit sind dann doch alle vier möglichen Schreibweisen am konkreten Beispiel aufgeführt (siehe „301 Redirect permanent: welche schreibweise ist richtig?„). 😉

      Ich denke, dass die Schreibweise in Ordnung sein dürfte. Deshalb habe ich eher den Verdacht, dass die Position am Ende nicht ok war. Ich habe meine Weiterleitungsregeln auch vor dem WordPress-Eintrag (Permalink-Regel) von WordPress stehen.

      Aber vielleicht ist da auch etwas, was Gerry noch nicht genannt hat, wir deshalb nicht kennen, aber entscheidend ist.

  6. Crazy Girl sagt:

    Ich tippe eher auf letzteres. Auf einem Account habe ich die unterschiedlichen Möglichkeiten (rewriterule und redirect permanant) kreuz und quer stehen, die funktionieren immer und überall. Außer mit einer Ausnahme, eine rule darf nie vor dem rewrite engine on stehen.

    Im Normalfall mache ich es aber wie Du, erst die manuellen redirect permanents und dann die Rules anfangen. Damit ist es schön sortiert.

    • Dieter sagt:

      Ganz egal dürfte die Reihenfolge nicht sein, denn die Regeln werden doch nacheinander abgearbeitet. Gibt es da einen Widerspruch dürfte die letzte die vorhergehende Regel überschreiben oder habe ich da einen Denkfehler?

      Vielen Dank für Deinen Hinweis darauf, dass zuerst eine rewrite engine on in der .htaccess stehen muss. Habe ich auch. Bei mir ist es die Umleitung zum Schutz vor doppelter // Eingabe (siehe „WordPress 2.8.3: Das Doppelslash-Problem“ bei toscho).

  7. Crazy Girl sagt:

    Total ganz egal ist es natürlich nicht, die Reihenfolge muss schon irgendwie passen. Ich kann nicht erst b auf c redirecten, wenn ich erst danach a zu b umschreibe. Aber so viel logischen Menschenverstand setze ich voraus 😉

    Ich meinte nur das es egal ist ob rules oder redirects, die können kreuz und quer durcheinander stehen. Erst ein paar rules, dann ein paar redirects, dann wieder rules, danach redirects… das meinte ich 😉

    • Dieter sagt:

      Da bin ich ja beruhigt, dass mein logischer Menschenverstand noch funktioniert. 😉

      Und nun verstehe ich auch was Du meinst. 🙂

      Bin gespannt, ob sich Gerry noch einmal meldet und über das Ergebnis seiner Bemühungen berichtet.

  8. Gerry sagt:

    Habe den Fehler gefunden. Danke für eure Hilfe.

    Habe den dritten Eintrag vor RewriteEngine On gesetzt.

    Vielen Dank

    • Dieter sagt:

      Hallo Gerry,

      danke für Deine Rückmeldung. Deine Weiterleitung funktioniert jetzt. Freut mich für Dich. 🙂

      Beste Grüße
      Dieter

  9. Klaus-Peter sagt:

    rewrite engine on in der .htaccess – das hab‘ ich so noch gar nicht gesehen. Die Datei wird einfach ausgelesen, und der Browser richtet sich danach, denn Redirect 301 versteht er auch alleine – ohne weiteres darüber, so meine Erfahrung.

Hinterlasse eine Antwort

Deine Mailadresse bleibt geheim. Pflichtfelder sind mit * gekennzeichnet.

elf + sechs =

Kommentare prüfe ich grundsätzlich vor einem Freischalten!
Ich bitte um Verständnis für diese Spamschutz-Maßnahme.

Webseite veröffentlicht am Dienstag, den 28. Dezember 2010, um 12:55 Uhr,
zuletzt geändert am Sonntag, den 12. Februar 2012, um 00:36 Uhr.
Tags: , , , , , ,


Statistik: 71 Seiten, 346 Blogartikel, 1.069 Schlagworte, 1.315 Kommentare.
© 2002 - 2018 | WordPress - Mein Layout basiert auf YAML und wird durch Xtreme One angetrieben. 
Diese Website setzt Cookies ein (Datenschutz). Wenn Du diese Website weiterhin besuchst, erklärst Du Dich mit deren Verwendung einverstanden.

Durch die weitere Nutzung der Seite stimmst Du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen