Dienstag, 27. März 2012
[*]

Sonderservice: WordPress um eine Verzeichnisebene nach oben verschieben

, 23:57

Svensonsan bastelt. Irgendwas klappt noch nicht so richtig. Ich habe Hilfe angeboten.

Wir stellen uns also vor, wir hätten ein WordPress (ganz normal, ohne Multisite-Funktion) auf einer Domain im Unterverzeichnis blog liegen. Das soll sich jetzt ändern, das „/blog“ soll aus allen URLs raus, die ganzen existierenden Links und Suchmaschinenergebnisse dürfen dabei aber nicht kaputt gehen. Der folgend beschriebene Weg dürfte der einfachste sein. Er funktioniert aber nur, wenn sich nicht gleichzeitig auch die Permalink-Struktur geändert hat:

Der Anfang liegt in der WordPress-Konfiguration. In der Datenbank oder wp-config.php müssen WP_HOME und WP_SITEURL auf die neue Adresse eingestellt werden. Jetzt funktioniert erstmal nichts mehr.

Als nächstes rücken die Dateien alle um ein Verzeichnis nach oben. Da ist es gut, wenn man Shellzugang zu seinem Webserver hat, denn nur mit ftp wird das beliebig eklig oder zumindest langwierig (abhängig davon, was den Server kann). Also zum Beispiel:

cd /var/www
mv htdocs htdocs.old
mv htdocs.old/blog htdocs

Jetzt funktionieren die neuen URLs aber die alten nicht mehr (dadurch sind wahrscheinlich auch alle Bilder kaputt etc. etc. — das war beabsichtigt, also keine Sorge). Wir legen deshalb in unserem Rootverzeichnis der Domain (im Beispiel /var/www/htdocs) einen neuen Ordner blog an und lassen Apache die Umschreibarbeit machen. In die Datei blog/.htaccess schreiben wir:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
</IfModule>

Dadurch werden alle angeforderten Dateien unterhalb von „/blog“ auf dieselbe Adresse ohne „/blog“ umgeleitet. Schon sollte alles wieder funktionieren. Jedenfalls habe ich so den Umzug von WordPress in einem Verzeichnis auf WordPress µ für die ganze Domain geschafft.

(Übung für Fortgeschrittene mit genug Adminrechten: den Ordner blog muss man nicht unbedingt im WordPress-Verzeichnis anlegen, er kann auch durch die Apache-Konfiguration von anderer Stelle eingeblendet werden.)

5 Reaktionen:

  1. […] Zu viele Umleitungen.” Habe da gestern noch kurz was geschrieben: dentaku.wazong.de/2012/03/27/s…rschieben/ #  Microblog     […]

  2. Gravatar

    Das muss doch auch viel einfacher gehen. Tut es auch. Mit etwas Nachdenken bin ich auf eine Lösung gekommen, bei der das ganze Blog im Verzeichnis „blog“ bleiben kann. Man braucht nur die folgenden Rewrite-Regeln in der .htaccess-Datei im Stammverzeichnis des Webservers:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^$ blog/ [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*) blog/$1 [L]
    </IfModule>
    

    (und das Blog muss wissen, dass unter der Adresse ohne /blog erreichbar ist)

  3. […] einen Test aufgesetzt und eine viel einfachere Lösung gefunden. Zum Artikel dazukommentiert: dentaku.wazong.de/2012/03/27/s…ment-55694 #  Microblog     […]

  4. Gravatar

    ah, danke für den Tipp! Werds ma versuchen! : )

  5. Gravatar

    Danke für die Hilfe. Ich habe es mit WordPress Bordmitteln zu 99% gelöst.

    WordPress ist erstaunlich gut in Sachen 301 Umleitung. Wusste ich vorher nicht, dann wäre das alles gar nicht passiert.

    Zur Info: Deeplink (wichtig! nur Deeplinks) auf Artikel, Kategorien, unterschiedliche Permalinkstrukturen etc, leitet WP von haus aus mit 301 korrekt weiter. Funktioniert sensationell gut.

    Nur Aufrufe auf die ehemalige Startseite (und nur die Startseite), in meinem Fall pop64.de/blog/, werden mit dem redirection-plugin als 301 weiter geleitet.

    Ich möchte gerne dieses Plugin nutzen, aus dem Grund, da es dort ein Log gibt.

    Danke trotzdem.

Kommentare willkommen