2010-11-21 3 views
0

Schrecklichen Titel, aber weiß nicht wirklich, wie die Situation zu gut beschreiben. Ich möchte Bilder dynamisch vergrößern/verkleinern. Ich hoffe, meine Apache-config Folgendes zu tun:Dynamisch Serving-Dateien, je nachdem, ob sie in das Dateisystem geschrieben werden

  • Ein Antrag auf /img/profile.jpg?crop & p = 50
  • Apache überprüft, ob die Datei /img/profile.c empfangen wird .50.jpg exists
  • Wenn es existiert, dient es das statisch, ohne meinen php-Server zu treffen
  • Wenn es nicht existiert, trifft es /cropper.php?path=/img/profile.jpg & p = 50
  • Diese Datei schreibt dann das Bild in eine Datei und dient dazu
  • Antrag wieder kommt (siehe Schritt 1) ​​

Ich fühle mich wie von uns konnte Verwendung des Filesmatch-Direktive in der .htaccess-Datei zu machen, aber ich nicht anfangen, weiß, wo sie wirklich. Irgendwelche Verbindungen würden geschätzt, oder irgendwelche Ideen.

Vielen Dank.

Antwort

1

\ Ich persönlich würde diese Aufgabe an ein Skript delegieren (vielleicht mit X-Sendfile), anstatt eine Umschrift Chaos.

Hier gehen Sie, können Sie Ihr Dokument root zwicken müssen und machen Sie Ihr „Profil“ Teil allgemeiner:

RewriteEngine on 
RewriteCond %{QUERY_STRING} "(?:^|&)crop&p=50" 
RewriteCond %{REQUEST_URI} ^(/img/profile)(\.png)$ 
RewriteCond /your/document/root%1.c.50%2 -f 
RewriteRule^%1.c.50%2 [L] 

# hand over to crop script if the above doesn't match 
RewriteCond %{REQUEST_URI} =/img/profile.png 
RewriteRule^/cropper.php?path=%{REQUEST_URI}&p=50 [L] 

Lösung immer ein Skript beteiligt: ​​ (Zugriff durch/img/profiles/... aus Gründen der Klarheit)

  • 1 $ erfasst die Profilnamen (in diesem Fall davon ausgegangen, 'az' nur
  • 2 $ sein fängt die gewünschte Breite
  • $ 3 die Dateierweiterung

das wirklich das Umschreiben vereinfacht:

RewriteEngine on 
RewriteRule ^/img/profiles/([a-z]+)\.([1-9][0-9]+)\.(jpe?g|gif|png)$ /cropper.php?profile=$1.$3&p=$2 [L] 

Das Skript würde überprüfen, ob die Datei vorhanden ist und entweder liefern sie oder generieren Sie es zuerst.

Lösung den Namen des Bildes von der angeforderten URL unter:

(Wie Sie in Ihrem Kommentar erwähnt)

RewriteEngine on 
RewriteCond %{REQUEST_URI} ^(/img/profile)\.([1-9][0-9]+)\.(png|gif|jpe?g)$ 
RewriteCond /your/document/root%{REQUEST_URI} -f 
RewriteRule^%{REQUEST_URI} [L] 

# hand over to crop script if the above doesn't match 
RewriteCond %{REQUEST_URI} ^(/img/profile)\.([1-9][0-9]+)\.(png|gif|jpe?g)$ 
RewriteRule^/cropper.php?path=$1.$3&p=$2 [L] 

, die auf die folgenden neu geschrieben werden, wenn die Bilder gespeichert sind, direkt in Ihr Dokumentstamm:

+0

Eigentlich, an zweiter Stelle, aber ich denke, der Fluss würde Sinn machen, wenn es * immer * referenzierte eine Datei wie als _/img/profile.c.50.jpg_ und dann neu schreiben Regel überprüft, wenn es existiert, und wenn nicht, es an die Datei cropper.php geroutet. Würde das deine Logik drastisch verändern? – onassar

+0

Siehe die dritte, es ändert sich nicht so viel.Die zweite, die immer das PHP-Skript verwendet, sieht viel sauberer aus und hält Ihre Verarbeitungslogik an der gleichen Stelle. Nachteil: Es wird mehr Ressourcen verbrauchen. – icanhasserver

+0

Ehrfürchtiger Mann! Vielen Dank für Ihre Hilfe! : D – onassar

Verwandte Themen