Michael: htaccess-Weiterleitung (Anfänger)

Einen schönen Sonntag wünsch ich!

Ich hoffe bei dem schlechten Wetter sitzen noch ein paar Leute vor dem PC und können mir helfen ;)

Also ich möchte eine htaccess-Weiterleitung schreiben, die alle Aufrufe aller *.png-Dateien weiterleitet auf bild.php?id=Dateiname.

Beispiele:
foobar.png => bild.php?id=foobar
123456.png => bild.php?id=123456
a1b2c3.png => bild.php?id=a1b2c3

Ich habe leider noch nie mit Weiterleitungen gearbeitet also habe ich auch keine Ahnung wie ich jetzt ansetzen muss. (Ich such gerade ein einfaches Tutorial)

Ist es schwer sowas umzusetzen oder kann ich mich als Anfänger ohne Probleme (oder Gefahren) da ran wagen? Gibt es vorab wichtige Dinge die ich wissen sollte um "typische Anfängerfehler" zu vermeiden?

Ich wär euch für ein bisschen Hilfe oder ein paar kleine Beispiele sehr dankbar!

LG

  1. Hello,

    Also ich möchte eine htaccess-Weiterleitung schreiben, die alle Aufrufe aller *.png-Dateien weiterleitet auf bild.php?id=Dateiname.

    Beispiele:
    foobar.png => bild.php?id=foobar
    123456.png => bild.php?id=123456
    a1b2c3.png => bild.php?id=a1b2c3

    http://httpd.apache.org/docs/2.2/urlmapping.html
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
    <//httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriteengine>
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond
    http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule

    RewriteEngine on
        RewriteRule ^(.*.png)$ bild.php?id=$1

    würde hier vermutlich schon reichen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Tom!

      RewriteEngine on
          RewriteRule ^(.*.png)$ bild.php?id=$1
      würde hier vermutlich schon reichen.

      Danke für die Links und das Beispiel!
      ... auch wenn ich nicht unbedingt gleich die Lösung wollte :D

      Jetzt wollte ich das grad mit meinem XAMPP (standardinstallation) testen aber *huch* unter Windows kann ich ja gar keine ".htaccess" erstellen.
      Muss ich da den Punkt weg lassen?

      LG

      1. Hello,

        RewriteEngine on
            RewriteRule ^(.*.png)$ bild.php?id=$1
        würde hier vermutlich schon reichen.

        Danke für die Links und das Beispiel!
        ... auch wenn ich nicht unbedingt gleich die Lösung wollte :D

        Jetzt wollte ich das grad mit meinem XAMPP (standardinstallation) testen aber *huch* unter Windows kann ich ja gar keine ".htaccess" erstellen.

        Unter WinXP auf jeden Fall schon.
        Unter Win98 nur mit einem entsprechenden Editor.
        Wie es bei Win2000 war, habe ich vergessen.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallo Tom,

          unter Windows kann ich ja gar keine ".htaccess" erstellen.
          Unter WinXP auf jeden Fall schon.
          Unter Win98 nur mit einem entsprechenden Editor.
          Wie es bei Win2000 war, habe ich vergessen.

          das geht unter allen Windows-Versionen von 95 bis XP gleich schlecht oder gleich gut. Vista und Windows 7 vermutlich ebenso.

          So long,
           Martin

          --
          Fettflecke werden wieder wie neu, wenn man sie regelmäßig mit etwas Butter einschmiert.
          1. Hello,

            unter Windows kann ich ja gar keine ".htaccess" erstellen.
            Unter WinXP auf jeden Fall schon.
            Unter Win98 nur mit einem entsprechenden Editor.
            Wie es bei Win2000 war, habe ich vergessen.

            das geht unter allen Windows-Versionen von 95 bis XP gleich schlecht oder gleich gut. Vista und Windows 7 vermutlich ebenso.

            Unter WinXP habe ich damit überhaupt keine Probleme und habe es die letzten Tage für eine paar Tests auch öfter mit dem LAMPP benutzt.
            Allerdings lege ich die .htaccess-Datei auch meistens gleich mit Textpad an. Ich liebe diesen Editor, muss ihm nur endlich mal die neue PHP-Syntax-Datei beibringen.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            y
            1. Hallo Tom & Martin!

              Es ist tatsächlich so, dass man eine Datei im Explorer mit führendem Punkt _nicht_ erstellen oder dazu umbenennen kann.

              Bsp.:
              Rechtsklick auf dem Desktop -> Neu -> Textdokument -> dann den Namen eintippen: ".htaccess" -> Ergebnis: "Bitte geben sie einen Dateinamen ein." -> Ok

              Notepad öffnen -> Datei schreiben -> speichern unter ".htaccess" -> Klappt!

              LG

      2. Hallo,

        Jetzt wollte ich das grad mit meinem XAMPP (standardinstallation) testen aber *huch* unter Windows kann ich ja gar keine ".htaccess" erstellen.

        doch, sicher. Der einzige, der sich da ein bisschen zickig anstellt, ist der Windows Explorer. Aber du kannst eine Textdatei entweder direkt aus dem Editor als ".htaccess" speichern, oder nachträglich auf der Konsole umbenennen.

        Muss ich da den Punkt weg lassen?

        Nicht, wenn du willst, dass der Apache diese Datei auch beachtet. Der Dateiname mit führendem Punkt ist da voreingestellt. Wobei ... diesen Namen kann man natürlich auch in der Serverkonfiguration ändern. Aber wozu?

        So long,
         Martin

        --
        Computer funktionieren grundsätzlich nicht richtig.
        Wenn doch, hast du etwas falsch gemacht.
    2. Hallo Tom!

      RewriteEngine on
          RewriteRule ^(.*.png)$ bild.php?id=$1
      würde hier vermutlich schon reichen.

      Schade, ich hatte mich irgendwie gefreut die Lösung zu bekommen, die Links hätte ich mir dann später angeschaut.
      Leider reicht das doch nicht.
      Meine id ist in dem Fall z.B. "foobar.png", nicht "foobar" wie sie sein soll.

      Ich muss mich also doch erstmal durch die Links kämpfen um zu verstehen was da schief läuft :|

      LG

      1. Hello Miachel,

        RewriteEngine on
            RewriteRule ^(.*.png)$ bild.php?id=$1
        würde hier vermutlich schon reichen.

        Schade, ich hatte mich irgendwie gefreut die Lösung zu bekommen, die Links hätte ich mir dann später angeschaut.

        Ja was denn nun. Wolltest Du mitdenken, oder nicht?

        RewriteEngine on
             RewriteRule ^(.*)(.png)$ bild.php?id=$1
                            ^     ^
                            |     |
                            $1    $2

        Meine id ist in dem Fall z.B. "foobar.png", nicht "foobar" wie sie sein soll.

        Wie wäre das denn. Als Backreferenz nehmen wir einfach nur die erste und die zweite lassen wir versickern.

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hallo Tom!

          Jaja, ich war doch dabei...

          Verdammt, ich hatte es vor einer Minute gefunden und wollte eigentlich nur noch bescheid sagen, dass das Problem gelöst ist xD
          Da warst du wohl schneller...

          Herzlichen Dank für deine Hilfe!

          LG

        2. Hallo,

          Hello Miachel

          Häuptling Flinker Finger? ;-)

          RewriteRule ^(.*)(.png)$ bild.php?id=$1
                              ^     ^
                              $1    $2

          Falsch auseinandergeklammert. Bestimmt wolltest du den Punkt von ".png" nicht von seinem Backslash trennen. So ist die schließende Klammer Teil des Suchmusters.

          Ciao,
           Martin

          --
          Denken ist wohl die schwerste Arbeit, die es gibt. Deshalb beschäftigen sich auch nur wenige damit.
            (Henry Ford, amerikanischer Industriepionier)
          1. Falsch auseinandergeklammert. Bestimmt wolltest du den Punkt von ".png" nicht von seinem Backslash trennen. So ist die schließende Klammer Teil des Suchmusters.

            Hehe, das hab ich nichtmal bemerkt.
            Aber das der Backslash zum maskieren dient hab ich wohl schon rausgefunden.
            Nochmal richtig fürs Archiv:

            RewriteRule ^(.*)(.png)$ bild.php?id=$1

            LG

            1. Hi,

              Nochmal richtig fürs Archiv:
              RewriteRule ^(.*)(.png)$ bild.php?id=$1

              Wenn schon, dann so:

              RewriteRule ^(.*).png$ bild.php?id=$1

              Die zweite Klammer wird nicht referenziert, also sollte man sie weglassen - das spart der Regex-Engine Arbeit.

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
              1. Hallo Andreas!

                Die zweite Klammer wird nicht referenziert, also sollte man sie weglassen - das spart der Regex-Engine Arbeit.

                Danke für den Hinweis!

                Ich habe es dann mittlerweile auch geschafft Unterverzeichnisse auszuschließen.

                Könntest du nochmal schauen ob ich es richtig gemacht habe?

                RewriteRule ^([^/]+).png$ dsg.php?id=$1

                Zumindest funktioniert es auf den ersten Blick.
                Ich muss auch zugeben, dass ich eher durch Zufall und nach ein bisschen rumprobieren mit dem Regex Coach darauf gestossen bin. Es erscheint mir mittlerweile allerdings auch logisch.

                LG

  2. hi,

    Also ich möchte eine htaccess-Weiterleitung schreiben, die alle Aufrufe aller *.png-Dateien weiterleitet auf bild.php?id=Dateiname.

    Wenn Du mal sagst, warum Du das möchtest, also wozu, hätte ich evntl. eine andere Lösung, die den Server nicht so abwürgt.

    Hotte

    --
    Why Potschemu Pourquoi Warum.
    1. Hallo Hotte!

      Wenn Du mal sagst, warum Du das möchtest, also wozu, hätte ich evntl. eine andere Lösung, die den Server nicht so abwürgt.

      Ist das denn so belastend?
      Es geht darum, dass Benutzerbilder generiert, aber nicht gespeichert werden.
      Das heißt bei jedem Aufruf wird das Bild neu generiert.
      Damit man das Bild jetzt auch woanders einbinden kann, speziell als Forumssignatur, soll die Adresse dazu ebend kein *.php?id=foobar sondern foobar.png sein.

      Und da hab ich auch schon ein wieder Problem :(
      Die Regel die "wir" unten geschrieben haben, betrifft leider auch PNGs in Unterverzeichnissen.
      Genauer wenn ich http://localhost/test/foobar.png schreibe erhalte ich mein gewünschtes Bild.

      Das Problem ist jetzt aber, dass http://localhost/test/UNTERVERZEICHNIS/foobar.png _nicht_ weitergeleitet werden soll.
      Ist das möglich oder wird die Weiterleitung in jedem Fall "vererbt"?

      LG