Rolf Rost: Mode Rewrite an MySQL koppeln

Moin,

siehe Betreff.
Vorgeschichte - Über meinen Blog erzeuge ich Einträge die dann beispielsweise so verlinkt sind derzeit:

(1) http://rolfrost.de/cgi-bin/blog.cgi?list=1154638835

Das sieht ein bischen liederlich aus. Da ich zu jedem Eintrag einen Titel habe, würde es besser aussehen, wenn anstelle des obenstehenden URIs stehen würde:

(2) http://rolfrost.de/Ladenschluss_zu_DDR_Zeiten

Titel, Text und Zeitstempel stehen in einer MySQL Tabelle. Wie kann ich den Webserver (Apache) dazu bringen mit der Tabelle zusammenzuarbeiten, damit (2) umgebogen wird auf (1)?

--roro

  1. echo $begrüßung;

    (1) http://rolfrost.de/cgi-bin/blog.cgi?list=1154638835
    (2) http://rolfrost.de/Ladenschluss_zu_DDR_Zeiten

    Um mod_rewrite wirst du da wohl nicht drumrumkommen. Eine einfache Lösung führt über RewriteMap. Dazu brauchst du aber Zugriff auf die Server- oder VHost-Konfiguration. Wenn das gegeben ist, sollte sich das mit "Hash File" oder "External Rewrite Program" erledigen lassen.

    Hast du keinen Serverkonfigurationszugriff fällt mir nur ein, (2) mit mod_rewrite auf ein serverseitiges Script umzuleiten, dass dann einen internen Request zu (1) tätigt und das Ergebnis durchreicht, oder den Browser anweist, (1) aufzurufen.

    echo "$verabschiedung $name";

    1. Moin!

      Hast du keinen Serverkonfigurationszugriff fällt mir nur ein, (2) mit mod_rewrite auf ein serverseitiges Script umzuleiten, dass dann einen internen Request zu (1) tätigt und das Ergebnis durchreicht, oder den Browser anweist, (1) aufzurufen.

      Wenn das Blogscript in der Lage ist, aus der ID den passenden Eintrag zu finden, dann sollte es auch in der Lage sein, anhand der Überschrift den passenden Eintrag zu finden - die Überschrift muß dann halt unique sein.

      Per mod_rewrite einfach alle Requests der Domain auf das Skript umzuleiten dürfte simpel sein. Die einzige Frage, die bleibt: Soll nun mod_rewrite die Überschrift erst in einen Parameter wandeln, den das Skript dann wieder ausliest und dekodiert, oder soll das Skript direkt die angefragte URL aus den CGI-Variablen auslesen und nutzen? Beides geht, letzteres verursacht weniger Trouble mit ggf. existierenden GET-Parametern.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
      1. Moin!

        Wenn das Blogscript in der Lage ist, aus der ID den passenden Eintrag zu finden, dann sollte es auch in der Lage sein, anhand der Überschrift den passenden Eintrag zu finden - die Überschrift muß dann halt unique sein.

        der URI müsste dann so aussehen, wenn es über das Script geht
         http://rolfrost.de/cgi-bin/blog.cgi?title=Ladenschluss_zu_DDR_Zeiten

        Schöner wärs jedoch so:

        http://rolfrost.de/Ladenschluss_zu_DDR_Zeiten

        Per mod_rewrite einfach alle Requests der Domain auf das Skript umzuleiten dürfte simpel sein.

        Genau dazu fehlt mir noch der Kick ;-)
        Also wie ich das mit mode_rewrite und einem einzigen Eintrag in der .htaccess machen kann. Das Script krieg ich dann schon hin.

        Viele Grüße, Rolf

        1. Moin!

          Schöner wärs jedoch so:

          http://rolfrost.de/Ladenschluss_zu_DDR_Zeiten

          Dann nehmen wir das mal.

          Per mod_rewrite einfach alle Requests der Domain auf das Skript umzuleiten dürfte simpel sein.

          Genau dazu fehlt mir noch der Kick ;-)

          RewriteRule ^/[^/]*$ /cgi-bin/blog.cgi

          Und die angeforderte URL mit dem Titel findest du dann in den CGI-Variablen und kannst sie in den Query einsetzen. So würde ich das jedenfalls machen.

          Die Lösung muß ggf. noch durch RewriteBase etc. ergänzt werden. Außerdem könnte die Positionierung des führenden Schrägstriches im .htaccess-Kontext falsch sein (ich nutze für mod_rewrite, wo immer ich kann, die zentrale Apache-Konfiguration, weil das performanter ist und weniger Trouble erzeugt - aber andererseits Root-Zugriff erfordert).

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Mahlzeit;

            Schöner wärs jedoch so:
            http://rolfrost.de/Ladenschluss_zu_DDR_Zeiten
            Dann nehmen wir das mal.

            Per mod_rewrite einfach alle Requests der Domain auf das Skript umzuleiten dürfte simpel sein.

            Genau dazu fehlt mir noch der Kick ;-)

            RewriteRule ^/[^/]*$ /cgi-bin/blog.cgi

            Genau das ist der Kick, der mir noch gefehlt hat...

            Und die angeforderte URL mit dem Titel findest du dann in den CGI-Variablen und kannst sie in den Query einsetzen. So würde ich das jedenfalls machen.

            Jo, ich auch ;-)

            Braucht dann noch Funktionen, die mir die titel URL - gerecht normalisiert und andersherum, aber das ist dann eine andere Geschichte...

            Die Lösung muß ggf. noch durch RewriteBase etc. ergänzt werden. Außerdem könnte die Positionierung des führenden Schrägstriches im .htaccess-Kontext falsch sein [..]

            Ok, ich mach mich jetzt mal los und lese die Details auf apache.org nach.

            Danke Sven!

            Viele Grüße, Rolf