Jörg Reinholz: Alternatives Bild anzeigen, falls orig. nicht existiert

Beitrag lesen

Ich verstehe das so, dass das Profilbild einen, z.b. durch die User-ID bestimmten Name hat, z.B. 1234567890.pic. Im Folgenden nehmen wir an:

1.) Die Bilddatei ist, so vorhanden, unter DOCUMENT_ROOT/userpics/1234567890.pic gespeichert und unter der URL http://example.com/userpics/1234567890.pic abrufbar.
2.) Das Default-Bild liegt unter DOCUMENT_ROOT/userpics/1234567890.pic und ist unter der URL http://example.com/userpics/default.pic abrufbar.

GANZ EINFACHE LÖSUNG:

Wenn der Browser das Bild abfordert und es nicht existiert, dann käme zu einem 404er. Den kann man z.B. beim Apache abfangen.

Dann stelle in
DOCUMENT_ROOT/userpics/.htaccess folgendes ein:

ErrorDocument 404 /userpics/default.pic

Voraussetzung:

AllowOverride ist passend gesetzt, enthält also mindestens FileInfo.

VERBESSERTE LÖSUNG:

Wenn Du vermeiden willst, dass jedes mal Logeinträge für den 404er geschrieben werden, dann mach das mit mod_rewrite, stelle in DOCUMENT_ROOT/userpics/.htaccess folgendes ein:

RewriteCond %{DOCUMENT_ROOT}/userpics/$1 !-f
RewriteRule (.*) /userpics?default.pic [L]

(Dokumentation)

ANDERE LÖSUNGEN:

Freilich kannst Du auch beim Erzeugen der Seite mit JSP nachschauen, ob das PIC existiert (und der Zugriff erlaubt wäre) und wenn nicht das default.pic ausliefern. Das ist optimal, weil die Lösung des Problems dann im Programm bleibt und somit nicht noch zusätzlich die Serverkonfiguration (z.B. bei einem Umzug zu überprüfen ist.) Die Ideallösung hinsichtlich der Leistung wäre die "GANZ EINFACHE LÖSUNG" bei abgestelltem Loggen der 404er oder eben die "VERBESSERTE LÖSUNG" (Der Server schaut sowieso nach, ob es die Datei gibt, er muss ja - wenn nicht - den 404er (FILE NOT FOUND) senden.

Jörg Reinholz