Balu: mod_rewrite mit variablen zu einer grafik

Hallo,

ich möchte mit mod_rewrite eine url weiterleiten.

aus der gegebenen url http://domain.tld/folder/folderdieesnichtgibt/variable.gif

die url http://domain.tld/folder/skript.php?input=variable  machen.

Die wariable soll aber nur aus zahlen bestehen, daher müsste ncoh ein regex rein.

Ich habe schon alles mögliche ausprobiert, dass leider alles nciht zum erhoften Erfolg geführt hat.

Wichtig zu sagen ist vielleicht, dass das skript.php im Header eine gif datei ist (die im php skript generiert wird).

Wie müsste die mod_rewrite Regel aussehen, damit es klappt?

Vielen Dank schonmal!

MfG

  1. Hi,

    Wichtig zu sagen ist vielleicht, dass das skript.php im Header eine gif datei ist (die im php skript generiert wird).

    Das ist vollkommen wurscht, da mod_rewrite vor PHP arbeitet.
    Was sind denn deine bisherigen Versuche und was ist passiert (Fehlermeldung?)? Dann kann ich dir auch (vielleicht) sagen, wo der Fehler liegt

    Marc

    1. Was sind denn deine bisherigen Versuche und was ist passiert (Fehlermeldung?)? Dann kann ich dir auch (vielleicht) sagen, wo der Fehler liegt

      Mir wurden mehrfach 404er Errors und sogar schon INternal Server Errors entgegengeworfen. Oder die Variable wurde nicht übergeben.

      RewriteEngine On
      RewriteBase /folder/
      RewriteRule ^badge/?$ /folder/badge.php?zahl=$1 [QSA]

      war mein letzer Versuch. Dummerweise kenn ich mich nicht so mit der apache Skriptsprache aus udn weiß daher nicht, wie ich ein regex, dass nur zahlen zulässt, einbaue. Und erstmal, wie ich das ding überhaupt ans laufen bekomme.

      1. RewriteEngine On
        RewriteBase /folder/
        RewriteRule ^badge/?$ /folder/badge.php?zahl=$1 [QSA]

        Apache unterstützt die ganz normalen regulären Ausdrücke, wie sie auch in PHP, Perl oder sonstwo funktionieren. Für dich wäre das dann wohl:

        RewriteRule ^badge/([0-9]+).gif$ /folder/badge.php?zahl=$1 [QSA,R]

        Die Option "R" (redirect) hinten dran kannst du entfernen. Zu testzwecken ist es aber ganz hilfreich, weil du dann sehen kannst wohin du umgeleitet wirst, also sprich, was das Ding macht...

        1. ([0-9]+)

          genau dass habe ich gesucht!

          Dank Dir!

          Nun klappts!

      2. So, nun benutze ich:

        RewriteEngine On
        RewriteBase /folder/
        RewriteRule ^badge/([0-9][0-9]).gif$ /folder/badge.php?zahl=$1 [QSA]

        dies funktioniert. Wohlgemerkt nur für Elemente mit 2 Zahlen. Wie kann ich ihm sagen, dass er zwar nur zahlen zulassen soll, er aber beliebig viele zahlen zulassen soll?

        1. hi,

          RewriteRule ^badge/([0-9][0-9]).gif$ /folder/badge.php?zahl=$1 [QSA]

          dies funktioniert. Wohlgemerkt nur für Elemente mit 2 Zahlen. Wie kann ich ihm sagen, dass er zwar nur zahlen zulassen soll, er aber beliebig viele zahlen zulassen soll?

          [0-9] ist eine Zeichenklasse, die die Ziffern 0 bis 9 umfasst.
          [0-9][0-9] verlangt also nach genau zwei solchen Zeichen hintereinander.

          Nutze die Klasse nur ein mal - [0-9] - und setze dahinter den Quantifier, der verlangt, dass das vorherige ein- oder mehrmals vorkommen muss: Das Plus-Zeichen.

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }