Ersatzbild für jedes Bild über htaccess

Kategorie:
Entwicklung
apache2

Immer wieder kommt die Anforderung von Kunden, dass eigene Bilder für Icons, Banner usw. definiert werden sollen können. Diese Anpassung benötigen aber meist aufwändige Einbauten im Code, weil für jedes Bild extra Zeilen anfallen.

Man könnte natürlich auch die Bilder einfach ersetzen. Das steht aber oft in Konflikt mit einem Deployment-Prozess, der die Dateien wieder überschreibt.

Um eine gute Lösung zu finden, habe ich mir eine Variante per .htacces und Apache RewriteEngine überlegt:

RewriteEngine On

#check for custom files —> xy.png = custom_xy.png
RewriteCond %{REQUEST_URI} \.(png|jpg|jpeg|gif)$
RewriteRule ^(.*)/(.*)\.(.*)$ $1/custom_$2.$3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/custom_(.*)\.(.*)$ $1/$2.$3

Fügt man diese Zeilen in die .htaccess -Datei im Web-Root-Folder ein, wird für Dateien des Typs png, jpg und gif geprüft ob eine Datei mit „custom_“-Präfix existiert.

Ein Beispiel:

Im Code wird die Datei mit der URL „http://www.server.org/images/edit.png“ eingebunden. Die RewriteEngine schreibt zuerst die URL auf „http://www.server.org/images/custom_edit.png“ um. Danach wird geprüft ob die Datei existiert. Wenn nicht, wird wieder zurück auf die alte URL umgeschrieben.

Wenn man weitere Endungen in der ersten RewriteCond hinzufügt, gilt die Regelung auch für diese Endungen. So könnte man zB eigene CSS-Dateien für Kunden implementieren ohne beim Deployment die Dateien zu überschreiben.

6. Februar 2014
Christoph Müller