Seite 1 von 1

Problem mit RewriteRule nach phpBB Forenupdate

Verfasst: 01.03.2009 22:19
von Joerg
Hallo allerseits,

ich habe die letzten Tage ein mehrere Jahre unter phpNuke laufendes phpBB-Forum 2.05 auf die aktuelle 3.04 plain upgedatet.
Die Konvertierung hat nach einigen großen und kleineren Problemchen auch geklappt, alle gewünschten Threads und User sind im Neuen Forum.

In Suchmaschinen und auf einigen Webseiten finden sich aber noch viele DeepLinks in das alte Forum, welches aber inzwischen offline ist. Diese Links gehen zur Zeit mittels php auf die Startseite des neuen Forums.
Geht zwar, aber schöner wäre doch, die Thread bzw. Posting Nummern mit zu übergeben. Noch dazu wo die Nummerierung mit dem alten Forum identisch ist.

Um das Problem zu lösen, wollte ich die Aufrufe mittels RewriteRule in der .htaccess konvertieren.

Und zwar möchte ich beim Aufruf aus
alt:

Code: Alles auswählen

www.roboter-teile.de/modules.php?name=Forums&file=viewtopic&p=1188
neu:

Code: Alles auswählen

www.roboter-teile.de/phpBB3/viewtopic.php?&p=1188
machen.

Das Mittel meiner Wahl in der .htaccess lautet dazu:

Code: Alles auswählen

RewriteRule ^modules.php?name=Forums&file=viewtopic&([^\.]+)$ phpBB/viewtopic.php?$1
Allerdings funktioniert das nicht wie es soll :-(
Vielleicht hat ja jemand eine Idee?

THX und Viele Grüße
Jörg

Re: Problem mit RewriteRule nach phpBB Forenupdate

Verfasst: 02.03.2009 10:06
von buegelfalte
Moin,

der Pfad stimmt nicht: "phpBB3" sollte es statt "phpBB" heißen, mit der Korrektur könnte es schon funktionieren ;)

Aber auch die Variable könnte man anders abfragen (vor allem ist "?&" in deinem neuen Code überflüssig, "?" reicht, wenn nur eine Variable übergeben wird) - wenn immer "p" übergeben wird, mußt du nur abfragen, ob dahinter eine Zahl kommt und nicht den kompletten Teil des Query-Strings parsen:

Code: Alles auswählen

RewriteRule ^modules.php?name=Forums&file=viewtopic&p=([0-9]*)$ /phpBB3/viewtopic.php?p=$1
Nicht getestet, erscheint mir aber "logischer".
Auch würde ich vielleicht noch "[L]" anhängen (einfach hinter die RewriteRule, mit einem Space davon getrennt), damit keine weitere Regel ausgeführt wird, oder besser noch [R=301,NC,L], damit wird zusätzlich die Groß-/Kleinschreibung nicht beachtet und der Server gibt einen "301"-Fehler aus, was z.B. Google sagt, daß die Seite umgezogen ist ("moved permanently"), damit verlierst du deinen Pagerank für die Seite nicht.

B.

Re: Problem mit RewriteRule nach phpBB Forenupdate

Verfasst: 02.03.2009 11:12
von Joerg
Hallo B.

vielen Dank für die schnelle Antwort.
der Pfad stimmt nicht: "phpBB3" sollte es statt "phpBB" heißen, mit der Korrektur könnte es schon funktionieren ;)
hmm ja, das war der halbherzige und zugegenermaßen idiotische Versuch die wahren Verhältnisse auf meinem Server leicht zu verschleiern. Also phpBB ohne 3 ist korrekt. Steht ja so auch in der RewriteRule noch drin.
Aber auch die Variable könnte man anders abfragen (vor allem ist "?&" in deinem neuen Code überflüssig, "?" reicht, wenn nur eine Variable übergeben wird) - wenn immer "p" übergeben wird, mußt du nur abfragen, ob dahinter eine Zahl kommt und nicht den kompletten Teil des Query-Strings parsen:
Jetzt wird es interessant. Im Internet stehen die verschiedensten Konstrukte, einmal mit p= (Postingnummer), aber auch mit t= (Threadnummer). Danach kommen u.U. noch weitere Parameter, z.B. highlight oder auch #(Postingnummer). Ich wollte eigentlich diesen ganzen Wust so weitergeben wie er ist. Habe auch getestet, dass das neue Forum damit klarkommt, auch wenn z.B. der highlight Parameter nicht funktioniert, da er nach hilit umbenannt werden müsste. Ist mir aber zu aufwändig. Es reicht schon wenn man von einer Website oder Suchmaschine an die richtige Stelle im neuen Forum kommt.

Code: Alles auswählen

RewriteRule ^modules.php?name=Forums&file=viewtopic&p=([0-9]*)$ /phpBB3/viewtopic.php?p=$1
Nicht getestet, erscheint mir aber "logischer".
OK, geht aber dann von einer einfachen Zahl als Parameter aus, die immer als Postingnummer interpretiert wird.
Auch würde ich vielleicht noch "[L]" anhängen (einfach hinter die RewriteRule, mit einem Space davon getrennt), damit keine weitere Regel ausgeführt wird, oder besser noch [R=301,NC,L], damit wird zusätzlich die Groß-/Kleinschreibung nicht beachtet und der Server gibt einen "301"-Fehler aus, was z.B. Google sagt, daß die Seite umgezogen ist ("moved permanently"), damit verlierst du deinen Pagerank für die Seite nicht.
Das habe ich ja in php auch bereits schon so gemacht.
Vielleicht ist es doch besser auch diese Parameterkonvertierung in php zu machen (modules.php), ich dachte nur mit einer Zeile in der .htaccess wäre alles gegessen.

THX und Viele Grüße
Jörg

Re: Problem mit RewriteRule nach phpBB Forenupdate

Verfasst: 02.03.2009 11:43
von buegelfalte
Joerg hat geschrieben:OK, geht aber dann von einer einfachen Zahl als Parameter aus, die immer als Postingnummer interpretiert wird.
Richtig, so war ja auch dein Beispiel ;)

Wenn du mehrere Parameter hast, kannst du für die anderen Parameter weitere Rules anlegen (für "t" z.B.).
Zusätzlich kannst du mit "[QSA]" in der .htaccess den Query-String trotz mod_rewrite einfach "durchreichen", dann geht dir auch "highlight" nicht verloren.
Oder aber die URL so parsen, wie du es vorher gemacht hast :)
Joerg hat geschrieben:Vielleicht ist es doch besser auch diese Parameterkonvertierung in php zu machen (modules.php), ich dachte nur mit einer Zeile in der .htaccess wäre alles gegessen.
Für mich sieht es so aus, als könnte man das mit einer Zeile in der .htaccess erledigen - aber ich kenne auch die "Parameterkonvertierung" nicht, benutze immer noch phpBB2 :)

B.

Re: Problem mit RewriteRule nach phpBB Forenupdate

Verfasst: 03.03.2009 14:09
von Joerg
Hallo B.

habe jetzt erstmal ein paar Anstöße das weiter zu verfolgen und werde mich gegebenenfalls hier nochmal melden.

Nochmal vielen Dank für Deine Hilfe.

Viele Grüße
Jörg