Regina Schauerlug: Modrewirte (RewriteRule - Verzeichnis) ändern

Beitrag lesen

Wir haben also ein großes Durcheinander mit Bildern und Verzeichnissen. Jetzt habe ich alle Bilder in ein Verzeichnis gepackt /img und sie thematisch sortiert (/Sommerfest-2015 usw.). Soweit so gut, damit ich nicht jetzt alle Bildeinträge "händisch" ändern muss, habe ich mir angelesen das ich weiterleitungen mit PHP Schreiben kann.

Die Vorgehensweise leuchtet mir nicht so ganz ein, aber mir fehlen dazu auch die Details.

Kurzum ich möchte alle Aufrufe, die auf das Verzeichnis "IMG" gehen, über mein PHP Script laufen lassen. Eine htacces im Verzeichnis /img, mit der es funktioniert, sieht wie folgend aus: RewriteRule ^(.*).jpg$ index-img.php?img=$1 Nun möchte ich es in die ROOT-htaccess einfügen.

Wieso?

index-img ist dann auch im ROOT Verzeichnis vorhanden.

Warum?

Funktioniert es im Verzeichnis img wie gewünscht, gibt es keinen Grund, das Wurzelverzeichnis vorzumüllen (und es gibt meines Erachtens keinen).

Belasse Dinge, die zusammengehören, in einem Verzeichnis, dafür sind Verzeichnisse da. RewriteRule in img/.htaccess, das Skript in img/index.php, die Bilder in img/.

Aber davon mal ab:

Da muss ich ja vor das jpg mein Verzeichnis /img/ setzten, nur das will ums verrecken nicht funktionieren.

RewriteRule ^img/(.+)\.jpg$ index-img.php?img=$1 (Nicht ausprobiert, ich hoffe, das stimmt)

Anmerkung 1: Du möchtest den Punkt vor jpg mit einem Rückstrich maskieren, weil der Punkt in so einem Muster als Platzhalter für ein beliebiges Zeichen steht. Du möchtest aber kein beliebiges Zeichen vor dem jpg, sondern einen Punkt als solchen – deshalb die Maskierung \. statt nur .

Anmerkung 2: Du möchtest vielleicht nur Bilder mit einem eigenen Dateinamen. Das Sternchen hinter dem Platzhalter (im Muster zusammen: .*) steht für "beliebig viele des vorangegangenen Elements, auch keines". Dein Muster .*\.jpg passt also auch auf ".jpg", einen Dateinamen, der nur aus der Endung besteht. Ersetzt du das Sternchen durch ein Plus, muss der Dateiname mindestens ein Zeichen vor dem .jpg haben (+ steht für "mindestens eines des vorangegenanen Elements").
Und der Vollständigkeit halber gibt es auch noch einen dritten einfachen Quantifizierer: Das Fragezeichen steht für "eines oder keines des vorangegangenen Elements".

Anmerkung 3: Siehe Wieso, Weshalb, Warum oben.