Regulärer Ausdruck in <FilesMatch

Alles, was den Apache betrifft, kann hier besprochen werden.

Regulärer Ausdruck in <FilesMatch

Postby prowler » 14. May 2009 19:14

Ich habe auf meinem Testserver einen Verzeichnisschutz erstellt, der auch prima funktioniert.

Nun hab ich aber ein Verzeichnis mit Bildern, das ich nur teilweise schützen möchte. Um den den ganzen Ordner vom Schutz auszunehmen, schreibe ich in die .htaccess (die im Unterverzeichnis liegt):

Satisfy Any
Order Deny,Allow
Allow from all

Jetzt möcht ich aber, dass nur bestimmte Bilder aufrufbar sind. Und zwar habe ich vier verschiedene Dateiarten von ein und demselben Bild:

bild.jpg
bild_thumb.jpg
bild_100.jpg
bild_500.jpg

Ich möchte konkret, dass man über http alle Bilder erreichen kann, außer bild.jpg. Dafür muss man dann ein Passwort angeben.

Versucht habe ich es so:
<FilesMatch "\*(_thumb|_100|_500).jpg$">
Satisfy Any
Order Deny,Allow
Allow from all
</FilesMatch>

Es funktioniert aber nicht, denn ich muss für jede Datei immer noch das Passwort angeben. Bitte helft mir :(
prowler
 
Posts: 12
Joined: 14. May 2009 19:06

Re: Regulärer Ausdruck in <FilesMatch

Postby Wiedmann » 14. May 2009 19:33

Und zwar habe ich vier verschiedene Dateiarten von ein und demselben Bild:

Also du möchtest genau diese 4 Bilder mit genau diesem Namen zulassen?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Regulärer Ausdruck in <FilesMatch

Postby Xardas der Dunkle » 14. May 2009 20:18

Du musst deine Abfragen genau umdrehen.
Alles zu lassen und nur für Bilder die nicht auf _thumb|_100|_500 enden die Passwort abfrage setzen.
Nur ist die Frage währe es nicht einfacher 4 Ordner an zu legen?
Code: Select all
fullsize/   - Mit Passwortabfrage versehen
thumb/
100/
500/
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Regulärer Ausdruck in <FilesMatch

Postby Wiedmann » 14. May 2009 20:47

Ich möchte konkret, dass man über http alle Bilder erreichen kann, außer bild.jpg.

Da sieht man mal, wie dumm meine letzte Frage war. Hab diesen Satz voll übersehen. Sorry.

(Xardas Zusammenfassung hat mich da nochmals draufschauen lassen.)

Code: Select all
<FilesMatch "\*(_thumb|_100|_500).jpg$">

Nach dem Apache Manual zuFilesMatch sollte das dann aber so aussehen:
Code: Select all
<FilesMatch "(_thumb|_100|_500)\.jpg$">
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Regulärer Ausdruck in <FilesMatch

Postby prowler » 15. May 2009 15:45

Danke, so funktioniert es:

Code: Select all
<FilesMatch "(_thumb|_100|_500)\.jpg$">


Ich versteh aber nicht wieso die Zeichenfolge \* weg muss. Heißt das Sternchen nicht, dass vor _thumb z.B. alles möglich stehen darf? Das Manual hab ich gelesen, stehe aber wohl voll auf'm Schlauch ...
prowler
 
Posts: 12
Joined: 14. May 2009 19:06

Re: Regulärer Ausdruck in <FilesMatch

Postby Xardas der Dunkle » 15. May 2009 17:09

prowler wrote:Ich versteh aber nicht wieso die Zeichenfolge \* weg muss. Heißt das Sternchen nicht, dass vor _thumb z.B. alles möglich stehen darf? Das Manual hab ich gelesen, stehe aber wohl voll auf'm Schlauch ...

Nein. Erstens steht das * für Wiederholung. Zweitens hast du einen Backslash davor gemacht, welcher als Escapezeichen dient (heißt du suchst nach Dateinamen mit einem * drin ;) ). Drittens da dein Regulärerausdruck nicht mit einem ^ beginnt, wird dieser auch nicht auf den Anfang des Dateinamens angewendet und du kannst dir .* (das ist der Platzhalter für "irgendwas"!) sparen.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Regulärer Ausdruck in <FilesMatch

Postby prowler » 15. May 2009 18:39

Achso, jetzt versteh ich das langsam. Und das Dollarzeichen am Ende, muss der stehen bleiben oder kann der etwa auch weg?
prowler
 
Posts: 12
Joined: 14. May 2009 19:06

Re: Regulärer Ausdruck in <FilesMatch

Postby Xardas der Dunkle » 15. May 2009 21:27

User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Regulärer Ausdruck in <FilesMatch

Postby prowler » 18. May 2009 19:17

Okay, danke, langsam werd ich schlauer. Allerdings werden meine Ansprüche auch etwas höher.

Wie negiere ich einen Ausdruck eigentlich?

<FilesMatch "(_thumb|_100|_500)\.jpg$"> bedeutet ja, dass die Bedingung erfüllt sein muss. Was muss ich schreiben, damit die Richtlinien nur dann ausgeführt werden, wenn die Bedinung *nicht* erfüllt ist?

Habe es mit <FilesMatch "!(_thumb|_100|_500)\.jpg$"> versucht, scheint aber nicht zu funktionieren ...
prowler
 
Posts: 12
Joined: 14. May 2009 19:06

Re: Regulärer Ausdruck in <FilesMatch

Postby Wiedmann » 18. May 2009 19:31

Habe es mit <FilesMatch "!(_thumb|_100|_500)\.jpg$"> versucht, scheint aber nicht zu funktionieren ...

Hätte das tun sollen? Kann mich nicht erinnern, das in der Anleitung zu Regex was mit einem "!" steht...

Ansonsten müsstest du da einen Look-Around machen. (Oder dein Problem anders lösen.)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Re: Regulärer Ausdruck in <FilesMatch

Postby Xardas der Dunkle » 18. May 2009 19:48

Wie gesagt ich würde 4 Verzeichnisse anlegen ... und nur für das eine den Passwortschutz anlegen, das ist bedeutend einfacher als mit den Regulärenausdrücken herum zu hantieren.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: Regulärer Ausdruck in <FilesMatch

Postby prowler » 19. May 2009 10:22

Klar, mit verschiedenen Verzeichnissen könnte man es machen. Aber 1. interessiert mich die Lösung, 2. können verschiedene Auflösungen dazukommen, so dass es für mich am Ende doch einfacher ist ein einzelnes Verzeichnis zu benutzen.

@Wiedmann: was meinst du mit Look-Around?
prowler
 
Posts: 12
Joined: 14. May 2009 19:06


Return to Apache

Who is online

Users browsing this forum: No registered users and 7 guests