URL: https://www.overclockers.at/coding-stuff/rewrite-umleitung-s9y-blog-auf-wordpress_236501/page_1 - zur Vollversion wechseln!
Ein Freund war so nett mir alle Beiträge aus meinem S9y-Blog nach Wordpress zu exportieren. Ich möchte nun, dass die Beiträge auch unter der alten URL erreichbar sind und würde gerne die .htaccess-Datei entsprechend anpassen.
Beispiel:
Das alte URL-Format:
/serendipity/index.php?/archives/2243-reclaim-your-digital-life-up-running.html
Das neue URL-Format:
/archives/2202-reclaim-your-digital-life-up-running.html
Ich bin einfach zu blöd, das in eine entsprechende Rule in meiner .htaccess zu packen und würde mich über jede Hilfestellung freuen.
lg
taz
ist am neuen server mod_rewrite aktiv?
ja.
ist der gleiche server, aus gründen die hier nicht weiter relevant sind wurde bisher kein gebrauch davon gemacht.
EDIT mein bisheriger (nicht funktionierender) Ansatz:
RewriteRule ^serendipity/index.php?archives/([0-9]+)\-(.*)\.html(\/*)$ index.php?p=$1 [R=301,L]
damit sollte die Post-ID aus der alten Struktur extrahiert werden und an die aktuelle URL angehängt. In Wordpress sind nun permalinks aktiviert, sodass aus dieser URL dann wiederrum die "schöne" URL generiert werden sollte. Aber das war die graue Theorie
Ist nicht ganz so einfach mit dem Querystring. So funktioniert's:
Allerdings passt bei deinen beiden URLs die Post-ID nicht zusammen. Und vor dem archives ist einmal ein / und einmal nicht. Ich habs jetzt mit diesen beiden URLs gemacht:Code:RewriteCond %{QUERY_STRING} ^archives/([0-9]+)\-(.*)\.html$ [NC] RewriteRule ^/serendipity/index.php$ /archives/%1-%2.html [R=301,L,QSD]
Hallo mat,
Danke für deine Antwort. Ich habe gestern und heute länger probiert das umzusetzen, scheitere aber nach wie vor kläglich. Wenn ich deine Zeilen einfüge erhalte ich einen 500 Server Error.
Meine .htaccess sieht aktuell so aus - die Versuche sind alle aktuell auskommentiert, aktiv ist nur der Standardcode von Wordpress, der bei aktivierten Permalinks generiert wird.
Die IDs sind tatsächlich durcheinander geraten - dürfte durch Draft-Posts geschehen sein. Es wäre mir aktuell sogar bereits egal, wenn auf die falschen Posts verwiesen wird, Hauptsache die Links laufen nicht ins Leere.
Könntest du mir nochmal weiterhelfen?
Code:# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / #RewriteRule ^serendipity/index\.php\?/(.*)$ $1 [R=301,L] #RewriteRule serendipity/index.php?^([^/]+)$ $1 [R=301,L] #RewriteRule ^serendipity/index.php?/archives/(.*)$ /archives/$1 [R=301,L] #RewriteRule ^serendipity/index.php?archives/([0-9]+)\-(.*)\.html(\/*)$ index.php?p=$1 [R=301,L] #RewriteCond %{QUERY_STRING} ^archives/([0-9]+)\-(.*)\.html$ [NC] #RewriteRule ^/serendipity/index.php$ /archives/%1-%2.html [R=301,L,QSD] RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Kannst du die Error Logs auslesen? Wäre gut herauszufinden, welche Fehlermeldung beim Internal Server Error 500 kommt. Bzw weißt du die Apache-Version?
Warum leitest du nicht alle Anfragen an die alten Adressen auf eine Seite in WP weiter, wo du den Umzug kurz beschreibst und auf die Suchfunktion hinweist?
Hallo mat,
phpinfo gibt aus wg Apache:
Apache Version Apache
Apache API Version 20051115
Wg Errorlogs: Ich kriege bei all-inkl die Logs anscheinend immer erst am Ende des Tages. ich werde also morgen früh nachsehen, ob da etwas brauchbares drin steht.
Sobald ich deine beiden Zeilen aktiviere funktioniert nicht einmal mehr die Startseite.
@kleinerChemiker: Weil der Blog aktuell teilweise gut rankt (ca 10.000-15.000 Besucher / Monat) und manche Einträge gut verlinkt sind. Das wäre dann alles weg.
Eine Überlegung wäre natürlich den alten Blog, Blog im jetzigen Unterordner sein zu lassen und im root einen neuen WP-Blog anzulegen.
@mat:
Hier ein Auszug aus dem Log, wenn deine Rule aktiv ist.
Code:88.117.38.255 - - [02/Nov/2013:17:25:54 +0100] "GET /archives/2147-ut-res-magis-valeat-quam-pereat..html HTTP/1.1" 500 346 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
Wenn jedoch die IDs nicht passen, führen die Links sowieso nicht zum gewünschten Beitrag. Ich würde daher die Wörter aus der alten Adresse extrahieren, und dann direkt zur neuen Suche umleiten, wo gleich dannach gesucht wird. Dann sollte der betroffene Beitrag leicht gefunden werden.
btw., warum gehst du weg von s9y?
Ist das access.log, nicht das error.log.Zitat von tazHier ein Auszug aus dem Log, wenn deine Rule aktiv ist.Code:88.117.38.255 - - [02/Nov/2013:17:25:54 +0100] "GET /archives/2147-ut-res-magis-valeat-quam-pereat..html HTTP/1.1" 500 346 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
@mat:
Die 2 Punkte sind in diesem Fall OK. Der Titel des Beitrages endet mit einem Punkt - daher dann im Endeffekt 2.
Hier nun endlich der Errorlog:
Code:[Sat Nov 02 17:25:22 2013] [alert] [client 88.117.38.255] /www/htdocs/v038961/test.gallien.org/.htaccess: RewriteRule: unknown flag 'QSD'
taz, die Lösung steht doch eh im Error Log: "RewriteRule: unknown flag 'QSD'". Das Flag "QSD" wird von deiner Apache-Version noch nicht unterstützt (2.4 aufwärts).
Dafür gibt es einen kleinen Trick, indem man einfach bei der Rewrite-URL ein ? anhängt. Dann wird der Querystring auch ignoriert. Die richtigen Rewrites lauten also:
Code:RewriteCond %{QUERY_STRING} ^archives/([0-9]+)\-(.*)\.html$ [NC] RewriteRule ^/serendipity/index.php$ /archives/%1-%2.html? [R=301,L]
Lieber mat,
Danke für die unermüdliche Unterstützung. Ich komme mir vor als würde ich Kisuaheli lernen.
Ich habe die Rules angepasst, aber nun wieder eine Fehlermeldung.
Beispiel:
Ich habe die aktuelle URL:
http://www.gallien.org/serendipity/...am-pereat..html
Ich ändere diese auf den Test-Bereich in
http://test.gallien.org/serendipity...am-pereat..html
Und erhalte beim Aufruf einen Fehler 403:
Forbidden
You don't have permission to access /serendipity/ on this server.
In der Adressleiste des Browserss wird dann folgende URL angezeigt:
http://test.gallien.org/serendipity...am-pereat..html
Woher kommt dieses "?" nach /serendipity/"?
EDIT:
in test.gallien.org/serendipity/ liegt keine index.php; dann ist der Status wie oben beschrieben.
Wenn ich dort eine index.php hineinlade (ist im Prinzip eine leere Seite mit einer Weiterleitung auf die Startseite test.gallien.org), dann greift bei der Eingabe dieser URL (
http://test.gallien.org/serendipity...am-pereat..html) anscheinend die /serendipity/index.php, da ich auf die Startseite umgeleitet werde anstatt dass die RewriteRule greift.
lg
taz
PS: mat hast du bei amazon einen Wunschzettel oder ähnliches?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025