Moin!
Nun habe ich folgende .htaccess im Hauptverzeichnis:
----->
RewriteEngine onRewriteCond %{REQUEST_URI} ^/gross/(.+?)/(.+).jpg$
RewriteRule ^gross/(.+?)/(.+).jpg$ bilder/bild.php?a=$2&b=$1RewriteCond %{REQUEST_URI} ^/klein/(.+?)/(.+).jpg$
RewriteRule ^klein/(.+?)/(.+).jpg$ bilder/$1/$2-klein.jpg
<-----
Warum hast du das RewriteCond drin?
mod_rewrite prüft zuallererst, ob der bei RewriteRule angegebene reguläre Ausdruck auf die aktuelle URL zutrifft.
NUR DANN wird bei eventuell vorhandenen RewriteCond geprüft, ob diese ebenfalls zutreffen.
Ohne RewriteCond, oder wenn diese zutreffen, wird direkt der zweite Ausdruck bei RewriteRule als neue URL erzeugt.
Wenn du also einen regulären Ausdruck für das URL-Muster hast, brauchst du nicht denselben Ausdruck nochmal in einer RewriteCond gegen REQUEST_URI zu prüfen - das erledigt RewriteRule automatisch. RewriteCond ist dazu da, ZUSÄTZLICHE Bedingungen zu prüfen.
Beispiel: Deine aufgerufene URL ist /album/bild.jpg. Mit RewriteRule soll daraus /script/bildlieferer.php?pic=bild.jpg werden, aber NUR, wenn das Bild tatsächlich im Verzeichnis bilder/groß/bild.jpg existiert. Nur dann ist eine RewriteCond notwendig, die die Existenz der Datei prüft.
Anderes Szenario: Eine Rewrite-Rule soll den Zugriff auf /css/screen.css nur dann auf screen-ie.css umleiten, wenn ein IE zugreift - also fragt man den User-Agent-String ab (ist zwar böse, das so zu tun, aber als Sinnbeispiel für RewriteCond demonstriert es, wozu diese Anweisung gut ist).
- Sven Rautenberg
My sssignature, my preciousssss!