Goster - Bruno Cathomas: Modrewirte (RewriteRule - Verzeichnis) ändern

Hallo,

ich bin kein Programmierer und habe sonst auch wirklich keine Ahnung von Programmierung. Aber ich habe verstanden, das man URLS umschreiben lassen kann. Also der Nutzer eine andere URL sieht als jene die wirklich aufgerufen wird. Ich Depp habe mich bereiterklärt bei unserer Vereinshomepage die Bilderwartung zu übernehmen. Jetzt merke ich das es irgnedetwas selbstgeschriebenes vom Sohn des Vorstandes ist. Änderungen am Script möglich aber ein kompl. Neuanfang ist vom Vorstand nicht gewünscht (Ich will so bleiben wie ich bin..).

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. Das Script funktioniert auch schon (wer hätte das gedacht).

Aber mit dem Rewriten (hoffentlich richtig geschrieben) breche ich mir die Finger. 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 htacces einfügen. Da muss ich ja vor das jpg mein Verzeichnis /img/ setzten, nur das will ums verrecken nicht funktionieren.

PS: index-img ist dann auch im ROOT Verzeichnis vorhanden.

  1. 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.

  2. hallo

    Nun möchte ich es in die ROOT htacces einfügen. Da muss ich ja vor das jpg mein Verzeichnis /img/ setzten, nur das will ums verrecken nicht funktionieren.

    PS: index-img ist dann auch im ROOT Verzeichnis vorhanden.

    Hast du die folgende Ergänzung vwerwendet?

    RewriteBase /

    Kann Wunder wirken, gerade dann, wenn querbeet irgendwelche htaccess vorhanden sind.