snorri: mod_rewrite mit Fragezeichen

Hej!

Nach einem Wechsel der Forensoftware, bei dem ich die Daten des alten Forums in das neue importieren konnte, möchte ich nun erreichen, dass die Links im Format des alten Forums weiterhin funktionieren. Da das gleichzeitig einen Umstieg von ASP auf PHP war, muss ich dafür wohl mod_rewrite bemühen.

Das alte Forum rief seine Threads so auf:

www.dk-forum.de/forum/link.asp?topic_id=1111

Das neue ist ein phpBB, also:

www.dk-forum.de/phpBB2/viewtopic.php?t=1111

Naheliegend war also, ein Verzeichnis "www.dk-forum.de/forum" anzulegen und dort eine .htaccess anzulegen mit dem Inhalt:

----------
RewriteEngine On
RewriteRule ^link.asp?topic_id=(.*)$  ../phpBB2/viewtopic.php?t=$1
----------

Leider funktioniert das nicht, und etwas Testen ergab, dass das an dem Fragezeichen links liegt. Das ist soweit auch nachvollziehbar, denn das "?" ist in RegExpen ja ein reserviertes Zeichen. Nur leider funktioniert es auch mit einem "?" nicht!

Wie muss ich das Fragezeichen escapen, damit das klappt?

-- snorri

  1. Liebe(r) snorri,

    Wie muss ich das Fragezeichen escapen, damit das klappt?

    gerade dieser Tage habe ich gelesen, dass Searchstrings (also alles nach dem Fragezeichen, selbiges inclusive) mit mod_rewrite nicht erfasst werden kann. Daher wäre wohl etwas mehr Handarbeit gefragt!

    Deine Umleitung müsste den Searchstring einfach beibehalten, lediglich die Dateireferenz vor dem Searchstring anpassen. Das erreichst Du mit "[QSA]" hinter Deiner Rewriterule, was wohl soviel wie "query string appended" bedeutet.

    RewriteRule ^link.asp?topic_id=(.*)$  ../phpBB2/viewtopic.php?t=$1 [QSA]

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. es sollte heißen:

      RewriteRule ^/forum/link.asp   /phpBB2/viewtopic.php [QSA]

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Hej!

        Ahaaaa. Ich zweifelte schon an meinen Qualifikationen :-)
        Wenn das so funktioniert, kann ich das Herausbasteln der übergebenen ID selbst in der viewtopic.php erledigen.

        Danke!

        -- snorri