Brombeermilchtrinker: Schutz vor Hotlinking per htaccess

Hallo Forum,

auf BananaJoe.de habe ich einen Beispiel gefunden, wie man per .htaccess-Datei Bilder vor Hotlinking schützen kann und dies entsprechend meiner URL umgeschrieben.

<FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !dieb.gif$
RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.org/dieb.gif [R]
</FilesMatch>

Das Ganze funktioniert wunderbar. Jeder Aufruf zB.einer .gif- oder .png-Datei, die _nicht_ von www.example.org kommt, bewirkt eine Ausgabe des "dieb.gif"-Bildes.

Jetzt möchte ich aber auch der Domain "example.net" die _volle_ Erlaubnis für den Request all dieser Dateiformate geben. Wenn ich einfach eine 2. RewriteCond Zeile schreibe,

RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.net/.*$ [NC]

dann führt das dazu, dass _jede_ Domain all die Dateitypen aufrufen kann. Also so, als ob ich die .htaccess-Datei gar nicht hätte.

Schreibe ich statt dem [NC] ein [NC,OR], so, wie ich es auf anderen Tutorialseiten gesehen habe,

RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.net/.*$ [NC,OR]

dann kommt es _nie_ zur Ausgabe einer Datei, egal, von welcher Domain aus der Aufruf erfolgt. Es kommt aber auch nicht zur Ausgabe von "dieb.gif". Es wird einfach _nichts_ angezeigt.

Kann mir bitte wer darstellen, wie ich meinen ursprünglichen Teil der .htaccess-Datei verändern muß, damit sowohl von example.org, _als auch_ von example.net der Aufruf erfolgen darf und der Request von allen anderen Domains mit dem "dieb.gif"-Bild "beantwortet" wird?

MfG

Der Brombeermilchtrinker

  1. Hallo Brombeermilchtrinker!

    RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://(www.)?example.net/.*$ [NC]

    dann führt das dazu, dass _jede_ Domain all die Dateitypen aufrufen kann. Also so, als ob ich die .htaccess-Datei gar nicht hätte.

    Mit einem or (|) probiert?

    RewriteCond %{HTTP_REFERER} !^http.*example.org|net.*$ [NC]

    Der Brombeermilchtrinker

    Nein, danke. Zu der Uhrzeit trinke ich noch Tee (heute ein Assam).

    Viele Grüße aus Frankfurt/Main,
    Patrick

    --
    _ - jenseits vom delirium - _

       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
    1. Hi Patrick,

      Mit einem or (|) probiert?

      RewriteCond %{HTTP_REFERER} !^http.*example.org|net.*$ [NC]

      in Wirklichkeit sind das 2 völlig verschiedene Domains, also nutzt mir diese Überlegung nichts. Und was, wenn ich einer 3. oder 4., wieder völlig anderen,  Domain den Aufruf von Bildern erlauben möchte?

      Ich habe jetzt schon so viel versucht, unter anderem zB ein [NC,OR] nach jedem Eintrag und ein [NC] nach der letzten Domain, der es erlaubt wird, in der Aufzählung. Leider mit nichts ein Ergebnis bisher.

      Nein, danke. Zu der Uhrzeit trinke ich noch Tee (heute ein Assam).

      Jetzt gerade trinke ich ein eiskaltes Red Bull Cola, das geilste Getränk seit langem.

      MfG

      Der Brombeermilchtrinker

      1. Hallo Brombeermilchtrinker!

        Mit einem or (|) probiert?

        RewriteCond %{HTTP_REFERER} !^http.*example.org|net.*$ [NC]

        in Wirklichkeit sind das 2 völlig verschiedene Domains, also nutzt mir diese Überlegung nichts. Und was, wenn ich einer 3. oder 4., wieder völlig anderen,  Domain den Aufruf von Bildern erlauben möchte?

        Dann mach mehrere »or«s! Folgendes funktioniert bei mir:

        RewriteEngine on
        RewriteCond %{HTTP_REFERER} !^http.*atomic-eggs|pac|nae.test|de|com.*$  [NC]
        RewriteRule .*somepic.jpg http://www.atomic-eggs.com/pics/someotherpic.jpg

        Das ist der Vorteil, dass ein Minimum an RegExps sowohl in der Bedingung als auch in der Regel funzen™.

        Viele Grüße aus Frankfurt/Main,
        Patrick

        --
        _ - jenseits vom delirium - _

           Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
        J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
        1. Hi Patrick,

          Dann mach mehrere »or«s!

          Wie meinst Du "mehrere »or«s"?

          Folgendes funktioniert bei mir:

          RewriteEngine on
          RewriteCond %{HTTP_REFERER} !^http.*atomic-eggs|pac|nae.test|de|com.*$  [NC]
          RewriteRule .*somepic.jpg http://www.atomic-eggs.com/pics/someotherpic.jpg

          Wie gesagt, wenn es nur um _eine_ Domain, der der Zugriff gestattet wird, geht, funktioniert ja mein

          <FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
          RewriteEngine on
          RewriteCond %{HTTP_REFERER} !^$
          RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC]
          RewriteCond %{REQUEST_FILENAME} !dieb.gif$
          RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.org/dieb.gif [R]
          </FilesMatch>

          eh perfekt. Ich weiß nur nicht, was ich tun soll, wenn ich den Zugriff auch (mehreren) anderen Domains erlauben will und das "dieb.gif"-Bild für alle _nicht_ genannten Domains ausgegeben werden soll.

          MfG

          Der Brombeermilchtrinker

          1. Hallo Brombeermilchtrinker!

            Wie meinst Du "mehrere »or«s"?

            brombeermilch|tee liest sich:

            brombeermilch oder tee

            brombeermilch|tee|holunderwein liest sich:

            brombeermilch oder tee oder holunderwein

            _Das_ meinte ich mit mehreren »or«s.

            Ich weiß nur nicht, was ich tun soll, wenn ich den Zugriff auch (mehreren) anderen Domains erlauben will und das "dieb.gif"-Bild für alle _nicht_ genannten Domains ausgegeben werden soll.

            Dann liste sie wie ich es Dir bereits vorgeschlagen habe:

            RewriteCond %{HTTP_REFERER} !^http.*atomic-eggs|pac|nae.test|de|com.*$  [NC]

            liest sich:

            wenn Referrer nicht atomic-eggs.test oder atomic-eggs.de oder atomic-eggs.com oder pac.test oder pac.de oder pac.com oder nae.test oder nae.de oder nae.com, dann greift die Regel!

            Naja, eher so:

            wenn Referrer weder atomic-eggs.test noch atomic-eggs.de noch atomic-eggs.com noch pac.test noch pac.de noch pac.com noch nae.test noch nae.de noch nae.com, dann greift die Regel!

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --
            _ - jenseits vom delirium - _

               Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
            1. Hi Patrick,

              Dann liste sie wie ich es Dir bereits vorgeschlagen habe:

              RewriteCond %{HTTP_REFERER} !^http.*atomic-eggs|pac|nae.test|de|com.*$  [NC]

              Angenommen, ich möchte den Zugriff genannter Dateitypen für die beiden Domains 'example.com' und 'test.org' erlauben, dann mache ich es jetzt Deineim Vorschlag folgend _so_:

              <FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
              RewriteEngine on
              RewriteCond %{HTTP_REFERER} !^$
              RewriteCond %{HTTP_REFERER} !^http.*example.com|*test.org.*$ [NC]
              RewriteCond %{REQUEST_FILENAME} !norequest.png$
              RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.com/dieb.gif [R]
              </FilesMatch>

              Das funktioniert beim Testen bisher so, wie ich das Ergebnis erwarte/möchte. Ist das so richtig und so ausgeführt, wie von Dir gemeint?

              Nur zur Absicherung: Egal, welche Seite jetzt einen Aufruf macht, also zB.

              example.com/index.php
              http://example.com/ordner1/test.php
              www.example.com
              http://www.example.com/ordner2
              www.example.com/ordner3/test.php
              subdomian.example.com
              http://subdomain.example.com
              http://subdomain.example.com/test2.html

              Bei jeder dieser Eingaben führt "RewriteCond %{HTTP_REFERER} !^http.*example.com|*test.org.*$ [NC]" also jetzt zur Auslieferung der Anfrage. Ist das richtig?

              MfG

              Der Brombeermilchtrinker

              1. Hallo Brombeermilchtrinker!

                Angenommen, ich möchte den Zugriff genannter Dateitypen für die beiden Domains 'example.com' und 'test.org' erlauben, dann mache ich es jetzt Deineim Vorschlag folgend _so_:

                <FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
                RewriteEngine on
                RewriteCond %{HTTP_REFERER} !^$
                RewriteCond %{HTTP_REFERER} !^http.*example.com|*test.org.*$ [NC]
                RewriteCond %{REQUEST_FILENAME} !norequest.png$
                RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.com/dieb.gif [R]
                </FilesMatch>

                Wozu Du REQUEST_FILENAME brauchst, musst Du wissen, in meinem Beispiel war es nicht nötig.

                Du kannst die Suffixe so gruppieren, statt:

                RewriteCond %{HTTP_REFERER} !^http.*example.com|*test.org.*$ [NC]

                RewriteCond %{HTTP_REFERER} !^http.*example|.*test.org|com.*$ [NC]
                                                            ^1    ^2

                1: Hier ein Punkt für ein beliebiges Zeichen (durch * wird es eins, keins oder beliebig viele Zeichen, wie vor »example«)
                2. Den Punkt, der die Bestandteile einer URL trennt, lieber maskieren.

                Nur zur Absicherung: Egal, welche Seite jetzt einen Aufruf macht, also zB.

                example.com/index.php
                http://example.com/ordner1/test.php
                www.example.com
                http://www.example.com/ordner2
                www.example.com/ordner3/test.php
                subdomian.example.com
                http://subdomain.example.com
                http://subdomain.example.com/test2.html

                Ja, dürfte funzen™. Sogar https ist abgesichert. Dafür dürfte:

                http://forum.de.selfhtml.org/?t=182723&m=1209390 als Referrer dazu führen, das Dein Bild »dieb.gif« angezeigt wird, solltest Du hier ein anderes Bild verlinken.

                Viele Grüße aus Frankfurt/Main,
                Patrick

                --
                _ - jenseits vom delirium - _

                   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                1. Hi Patrick,

                  ich muß nochmals nachfragen.

                  Wozu Du REQUEST_FILENAME brauchst, musst Du wissen, in meinem Beispiel war es nicht nötig.

                  Das habe ich, wie gesagt, von dem Beispiel, das ich ursprünglich kopiert hatte.

                  Du kannst die Suffixe so gruppieren, statt:

                  RewriteCond %{HTTP_REFERER} !^http.*example.com|*test.org.*$ [NC]

                  RewriteCond %{HTTP_REFERER} !^http.*example|.*test.org|com.*$ [NC]

                  Das würde aber, wenn ich Dich richtig verstanden habe, auch einen Aufruf von example.org und von test.com erlauben. Ich will aber _nur_ die Freigabe für example.com und test.org.

                  _Und_ ich möchte auch noch die Freigabe für das SELFHTML-Forum. Also für Adressen wie "http://forum.de.selfhtml.org/archiv/2009/1/t181565/#m1200780" oder "http://forum.de.selfhtml.org/?t=182723&m=1209390".

                  Wenn ich dabei Deinen Hinweis

                  1. Den Punkt, der die Bestandteile einer URL trennt, lieber maskieren

                  befolge, dann sieht mein momentanes Endergebnis _so_ aus. (Und funktioniert!)

                  <FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
                  RewriteEngine on
                  RewriteCond %{HTTP_REFERER} !^$
                  RewriteCond %{HTTP_REFERER} !^http.*example.com|.*test.org|.*forum.de.selfhtml.org.*$ [NC]
                  RewriteCond %{REQUEST_FILENAME} !norequest.png$
                  RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.com/norequest.png [R]
                  </FilesMatch>

                  Kann ich das so belassen?

                  MfG

                  Der Brombeermilchtrinker

                  1. Hallo Brombeermilchtrinker!

                    ich muß nochmals nachfragen.

                    Gerne.

                    Wozu Du REQUEST_FILENAME brauchst, musst Du wissen, in meinem Beispiel war es nicht nötig.
                    Das habe ich, wie gesagt, von dem Beispiel, das ich ursprünglich kopiert hatte.

                    Ach, jetzt leitest Du auch auf norequest.jpg und nicht mehr auf dieb.gif. Dann brauchst Du das auch, sonst greift die Umleitregel auf dieses Request.

                    RewriteCond %{HTTP_REFERER} !^http.*example|.*test.org|com.*$ [NC]
                    Das würde aber, wenn ich Dich richtig verstanden habe, auch einen Aufruf von example.org und von test.com erlauben.

                    Ja.

                    Ich will aber _nur_ die Freigabe für example.com und test.org.

                    Dann ist es so, wie Du es jetzt hast, richtig.

                    dann sieht mein momentanes Endergebnis _so_ aus. (Und funktioniert!)

                    <FilesMatch ".(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$">
                    RewriteEngine on
                    RewriteCond %{HTTP_REFERER} !^$
                    RewriteCond %{HTTP_REFERER} !^http.*example.com|.*test.org|.*forum.de.selfhtml.org.*$ [NC]
                    RewriteCond %{REQUEST_FILENAME} !norequest.png$
                    RewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.com/norequest.png [R]
                    </FilesMatch>
                    Kann ich das so belassen?

                    Ich denke schon. Verlinke mal hier ein Bild, und schau, ob es nach dem Klicken auch im Browser erscheint ;)

                    Wobei ich hier lediglich auf .*selfhtml.org testen würde, da ist forum.de.selfhtml.org berücksichtigt. Oder befürchtest Du, dass in der SELFHTML-Doku oder auf SELFHTML aktuell künftig Bilder von Deinem Webspace verlinkt werden? ;)

                    Viele Grüße aus Frankfurt/Main,
                    Patrick

                    --
                    _ - jenseits vom delirium - _

                       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                    1. Hi Patrick,

                      Wozu Du REQUEST_FILENAME brauchst, musst Du wissen, in meinem Beispiel war es nicht nötig.
                      Das habe ich, wie gesagt, von dem Beispiel, das ich ursprünglich kopiert hatte.

                      Ach, jetzt leitest Du auch auf norequest.jpg und nicht mehr auf dieb.gif. Dann brauchst Du das auch, sonst greift die Umleitregel auf dieses Request.

                      Entschuldige, aber ich verstehe grad gar nicht, was Du meinst. :-(

                      Ist das "RewriteCond %{REQUEST_FILENAME} !norequest.png$" in meinem jetzigen Endergebnis, das Du als "Ich denke schon, dass man das so lassen kann" eingeschätzt hast, nun nötig oder nicht?

                      Wobei ich hier lediglich auf .*selfhtml.org testen würde, da ist forum.de.selfhtml.org berücksichtigt.

                      Ich habe es schon getestet (nur in der Vorschau, nicht ausgeführt) und es hat funktioniert, sprich, das angeforderte Bild wurde angezeigt.

                      Oder befürchtest Du, dass in der SELFHTML-Doku oder auf SELFHTML aktuell künftig Bilder von Deinem Webspace verlinkt werden? ;)

                      Nein, aber ich fürchte, dass sich SELFHTML die *Milliarden* an Euro, die ich dafür *selbstverständlich* verlangen würde, nicht leisten kann. ;-)

                      mfG

                      Der Brombeermilchtrinker

                      1. Hallo Brombeermilchtrinker.

                        Entschuldige, aber ich verstehe grad gar nicht, was Du meinst. :-(

                        Ist das "RewriteCond %{REQUEST_FILENAME} !norequest.png$" in meinem jetzigen Endergebnis, das Du als "Ich denke schon, dass man das so lassen kann" eingeschätzt hast, nun nötig oder nicht?

                        Ja, denn sonst würde ein Request nach norequest.png auch umgeleitet, und zwar auf norequest.png und von da aus nach norequest.png und dann wieder nach ...

                        Diese Endlosschleife verhinderst du mit der RewriteCond.

                        Servus,
                        Flo

                      2. Hallo Brombeermilchtrinker!

                        Ach, jetzt leitest Du auch auf norequest.jpg und nicht mehr auf dieb.gif. Dann brauchst Du das auch, sonst greift die Umleitregel auf dieses Request.
                        Entschuldige, aber ich verstehe grad gar nicht, was Du meinst. :-(

                        Warum, nicht? Ich habe doch Deutsch geschrieben ;)

                        OK. Das mit dem REQUEST_FILENAME hatte ich in Deinem ersten Post übersehen, deswegen kam es in meinem Beispiel auch nicht vor, das lediglich ein Request auf ein Bild namens somepic.jpg zu einem Bild someotherpic.jpg mittels RewriteRule »umleitete«.

                        Du brauchst das aber, weil Du in Deiner Regel alle Requests auf .gif, .jp(e)g, .png nebst einige andere abfängst.
                        Ohne die zusätzliche Bedingung %{REQUEST_FILENAME} !norequest.png$ würde die Regel auch greifen, wenn norequest.png angefordert wird, das heißt, du hättest eine schöne Endlosschleife verursacht, was Dein Server Dir mit einem 500er quittieren würde.

                        Die Bedingung und die Regel auf Deutsch übersetzt bedeuten also:

                        Zeige bei allen Bildressourcenanforderungen, die nicht norequest.png sind, das Bild norequest.png.

                        Nein, aber ich fürchte, dass sich SELFHTML die *Milliarden* an Euro, die ich dafür *selbstverständlich* verlangen würde, nicht leisten kann. ;-)

                        Virtuelles Gold? ;)

                        Viele Grüße aus Frankfurt/Main,
                        Patrick

                        --
                        _ - jenseits vom delirium - _

                           Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                        J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                        1. Hi Patrick,

                          danke, jetzt ist es mir klar!

                          Nur Eines verwundert mich: Ich habe es kurz ausprobiert, was passietrt, wenn ich das "%{REQUEST_FILENAME}" weglasse und eie Domain, der es _nicht_ ausdrücklich erlaubt ist, fordert die (vorhandene) Datei "baum.jpg" an. Dann wird Das Baum-Bild zwar, wie gewünscht, nicht ausgegegben, aber es kommt _nicht_ zum Erscheinen von "norequest.png".

                          Ist das für Dich logisch, wenn man sich die Zeilen ohne dem Filenamerequest ansieht?

                          MfG

                          Der Brombeermilchtrinker

                          1. Hallo Brombeermilchtrinker!

                            Nur Eines verwundert mich: Ich habe es kurz ausprobiert, was passietrt, wenn ich das "%{REQUEST_FILENAME}" weglasse und eie Domain, der es _nicht_ ausdrücklich erlaubt ist, fordert die (vorhandene) Datei "baum.jpg" an. Dann wird Das Baum-Bild zwar, wie gewünscht, nicht ausgegegben, aber es kommt _nicht_ zum Erscheinen von "norequest.png".
                            Ist das für Dich logisch, wenn man sich die Zeilen ohne dem Filenamerequest ansieht?

                            Ja, da hattest Du schon die Endlosschleife:

                            Angefordert wurde »baum.jpg«
                            Die RewriteRule greift und fordert stattdessen »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                            .
                            .
                            .
                            .

                            Wie lange hast Du es so stehen lassen? Es ist nämlich unterschiedlich, wie lange der Server braucht, bis er einen 500er ausliefert..., bei meinem alten  Provider hätte ich lange warten können. Aber mittlerweile erkennt Firefox sowas und liefert eine entsprechende Meldung (zumindest hatte ich das beim RedirectPermanent beobachtet).

                            Viele Grüße aus Frankfurt/Main,
                            Patrick

                            --
                            _ - jenseits vom delirium - _

                               Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                            J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                            1. Hi Patrick,

                              Ja, da hattest Du schon die Endlosschleife:

                              Angefordert wurde »baum.jpg«
                              Die RewriteRule greift und fordert stattdessen »norequest.png«
                              Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                              Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                              [...]

                              OK, ist etwas abstrakt aber ich denke, ich kann es nachvollziehen, danke für den Denkanstoß. Na gut, dann wäre mein ursprüngliches Problem gelöst und ich habe, was ich will. Danke vielmals für die Zeit, die Du Dir genommen hast für mich!

                              MfG

                              Der Brombeermilchtrinker

                              Wie lange hast Du es so stehen lassen?

                              Bei mir bleibt nie was lange stehen. Frag die kleine Blonde von vorgestern an der Bar. ;-)

                              1. Hallo Brombeermilchtrinker!

                                Angefordert wurde »baum.jpg«
                                Die RewriteRule greift und fordert stattdessen »norequest.png«
                                Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                                Die RewirteRule greift und fordert statt »norequest.png« »norequest.png«
                                [...]

                                OK, ist etwas abstrakt

                                Keineswegs: die Dateiendung .png ist ja in deinen abzufangenen Ressourcen:

                                ewriteRule .*.(gif|jpe?g|png|bmp|pdf|zip|rar|mp3|js)$ http://www.example.com/norequest.png [R]
                                                          ^^^

                                Der Client forder die baum_.jpg_ an, ist auch in der Liste, also greift die Regel und der Server will die norequest.png ausliefern. Nur: _.png_ ist auch in der Liste der Endungen, die es abzufangen gilt, also greift die Regel neu, und der Server will (wieder) die norequest.png ausliefern und so weiter und so fort...

                                Erst durch die negierte REQUEST_FILENAME wird »norequest.png« für die Regel ignoriert, und deswegen, wenn diese Bedingung vermerkt ist, kann der Server die Ressource auch ausliefern.

                                Wie lange hast Du es so stehen lassen?
                                Bei mir bleibt nie was lange stehen. Frag die kleine Blonde von vorgestern an der Bar. ;-)

                                Ich verstehe: Du trinkst Dein Glas sehr schnell aus, das die kleine Blonde an der Bar Dir serviert hatte. ;)

                                Viele Grüße aus Frankfurt/Main,
                                Patrick

                                --
                                _ - jenseits vom delirium - _

                                   Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                                J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                                1. Hi Patrick,

                                  OK, ist etwas abstrakt

                                  Keineswegs: die Dateiendung .png ist ja in deinen abzufangenen Ressourcen:

                                  Ich wollte damit nicht sagen, daß ich Deine Erklärung nicht verstanden habe, sie mir nur etwas durchdenken habe müssen. Ich hätte es schon verstanden! Aber jetzt ist es _noch_ klarer für mich, danke!

                                  Wie lange hast Du es so stehen lassen?
                                  Bei mir bleibt nie was lange stehen. Frag die kleine Blonde von vorgestern an der Bar. ;-)

                                  Ich verstehe: Du trinkst Dein Glas sehr schnell aus, das die kleine Blonde an der Bar Dir serviert hatte. ;)

                                  Nein, _das_ hast Du _falsch_ verstanden. Aber vielleicht ist es verständlicher, wenn Du es aus den Augen der kleinen Blonden siehst:

                                  <FilesMatch ".(Männer|Jungs)$">
                                  RewriteEngine on
                                  RewriteCond %{HTTP_REFERER} !^$
                                  RewriteCond %{HTTP_REFERER} !^.*grosser|kleiner.blonder|dunkelhaariger|schwarzhaariger.Mann|Junge.mit viel Geld|ohne Geld.*$ [NC]
                                  RewriteCond %{REQUEST_FILENAME} !Brombeermilchtrinker$
                                  RewriteRule .*.(Männer|Jungs)$ Brombeermilchtrinker [R]
                                  </FilesMatch>

                                  ;-)

                                  1. Hallo Brombeermilchtrinker!

                                    <FilesMatch ".(Männer|Jungs)$">
                                    RewriteEngine on
                                    RewriteCond %{HTTP_REFERER} !^$
                                    RewriteCond %{HTTP_REFERER} !^.*grosser|kleiner.blonder|dunkelhaariger|schwarzhaariger.Mann|Junge.mit viel Geld|ohne Geld.*$ [NC]
                                    RewriteCond %{REQUEST_FILENAME} !Brombeermilchtrinker$
                                    RewriteRule .*.(Männer|Jungs)$ Brombeermilchtrinker [R]
                                    </FilesMatch>

                                    _Jetzt_ hast du alles vertanden!

                                    Viele Grüße aus Frankfurt/Main,
                                    Patrick

                                    --
                                    _ - jenseits vom delirium - _

                                       Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
                                    J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
                                  2. <FilesMatch ".(Männer|Jungs)$">

                                    [...]

                                    RewriteRule .*.(Männer|Jungs)$ [...]
                                    </FilesMatch>

                                    Doppelt hält besser? mod_rewrite ist eigntlich nicht für den Einsatz in files oder location-Abschnitten vorgesehen; das sollte nicht nur nicht nötig sein, da du die Einschränkung über dein Suchmuster der RewriteRule, welches vor den Conditions geprüft wird, ja schon vornimmst, sondern dort funktioniert das Entfernen des per-dir-Prfixes auch nicht.

    2. Hi!

      Der Brombeermilchtrinker

      Nein, danke. Zu der Uhrzeit trinke ich noch Tee (heute ein Assam).

      Mir is komischerweise grad eher schon nach nem Oban. Mit nem Glas schottischen Wassers. Kein gutes Zeichen, wenn man mich fragt...

      --
      "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
            - T. Pratchett
  2. Hi,

    RewriteCond %{HTTP_REFERER} !^http://(www.)?example.org/.*$ [NC,OR]
    RewriteCond %{HTTP_REFERER} !^http://(www.)?example.net/.*$ [NC,OR]

    dann kommt es _nie_ zur Ausgabe einer Datei, egal, von welcher Domain aus der Aufruf erfolgt.

    Wenn in diesem Falle der Request von example.org kommt (mit entsprechendem Referrer), dann trifft die zweite RewriteCond zu - der Referrer ist *nicht* example.net.
    Das hast du jetzt per OR mit der anderen Condition verknuepft - einmal "wahr" per ODER mit irgendwas anderem verknuepft, ergibt immer wahr.

    Der Referrer erfuellt immer mindestens eine der beiden Bedingungen - also kommt auch immer deine anschliessende RewriteRule zur Anwendung, die den Zugriff untersagt.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“