2009-12-07 28 views
9

Tôi rất tò mò nếu có thể sử dụng .htaccess để phân phối hình ảnh mặc định khi một hình ảnh cụ thể được yêu cầu không tồn tại (lưu ý: chỉ yêu cầu hình ảnh phải nâng cao hành vi này). Tôi biết tôi có thể làm điều này với PHP bằng cách phục vụ các hình ảnh thông qua một kịch bản, nhưng tôi tò mò hơn nếu điều này có thể được thực hiện với .htaccess thay thế.Mặc định (dự phòng) Hình ảnh có .htaccess?

Giả sử tôi yêu cầu /thumbnails/010.gif, không tồn tại. Làm thế nào tôi có thể nhận được .htaccess để phục vụ lên /thumbnails/default.gif tại chỗ của nó?

Trả lời

10

Tôi tin rằng điều này sẽ phù hợp với bạn. Đặt .htaccess này trong thư mục hình thu nhỏ của bạn và bất kỳ URI dưới đây/thumbnails không tồn tại sẽ chỉ đạo để /thumbnails/default.gif

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ default.gif [NC,L] 
+3

Dường như nó thực hiện thủ thuật. Bạn có thể hạn chế nó chỉ để gọi cho hình ảnh, thay vì bất kỳ tập tin bị thiếu? Có lẽ (.png | .jpg | .gif | .jpeg) – Sampson

2

Vì bạn chỉ muốn có nó áp dụng cho /thumbnails/:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^thumbnails/ thumbnails/default.gif 
1

Nếu bạn gửi chỉ hình ảnh từ thư mục này, bạn có thể sử dụng các tuyên bố ErrorDocument như thế này:

ErrorDocument 404 /thumbnails/default.gif 

/thumbnails phải tương ứng với số DocumentRoot của bạn.

Tôi đã thử nghiệm nó với FF và nó như đã hứa. Tuy nhiên có thể có vấn đề với IE "Không hiển thị 404s nhỏ hơn vài trăm KB" #%? $!

Các vấn đề liên quan