"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Rewrite-Umleitung: S9y-Blog auf Wordpress

taz 29.10.2013 - 00:23 3024 13
Posts

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
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
Bearbeitet von mat am 05.11.2013, 18:25 (Titel aktualisiert)

Bogus

C64 Generation
Avatar
Registered: Mar 2006
Location: Graz
Posts: 3170
ist am neuen server mod_rewrite aktiv?

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
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 ;)
Bearbeitet von taz am 29.10.2013, 07:22

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25376
Ist nicht ganz so einfach mit dem Querystring. So funktioniert's:

Code:
RewriteCond %{QUERY_STRING} ^archives/([0-9]+)\-(.*)\.html$ [NC]
RewriteRule ^/serendipity/index.php$ /archives/%1-%2.html [R=301,L,QSD]
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:

Von: /serendipity/index.php?archives/2202-reclaim-your-digital-life-up-running.html
Nach: /archives/2202-reclaim-your-digital-life-up-running.html

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
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

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25376
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?

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4256
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?

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
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.

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
@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"                

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4256
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?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25376
Zitat von taz
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"                
Ist das access.log, nicht das error.log.

Obwohl, schau dir mal die URL im access.log an: /archives/2147-ut-res-magis-valeat-quam-pereat..html
Hat zwei mal einen Punkt vor dem html. :confused:

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
@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'

@kleinerchemiker:

Warum weg von s9y - es ist ein gutes, solides Blogsystem. Ich bin mit Smarty aber nie zurecht gekommen, Dank vieler Experimente in den letzten Jahren (multisite-installation, ...) ist das System etwas "ramponiert; so geht bspw kein Editor mehr, ich muss jeden Post in Code verfassen :D.

Wordpress bietet in meinen Augen heute einfach einen wesentlich höheren Komfort, den ich gerne nutzen möchte.

Deine Einwände mit der ID sind berechtigt. Ich überlege auch, ob man das Problem nicht so abfängt, dass man im jetzigen Blogsubverzeichnis eine index.php macht, die je nach Anfrage weiterleitet auf die Wordpresssuche und automatsch zB die ID sucht. Die steht ja in der URL und sollte auffindbar sein. So erhält ein Suchender keine Fehlermeldung und rasch die gewünschte Information.

Alternativ ist auch die Überlegung einfach komplett neu zu starten und entweder die alten S9y-Seiten in HTML hochzuladen (also zuerst mit wget ziehen und dann wieder rauf laden statt dem dynamischen s9y) oder eben die alten Beiträge in WP mit neuer URL zu starten und alle alten URLs führen auf die Startseite.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25376
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]

So schwer war das eigentlich nicht, oder? ;)

taz

Legend

Avatar
Registered: Apr 2000
Location: ärgsten Kaff
Posts: 2233
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?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz