Показать no_picture.png.htaccess, если изображение не существует

Я хочу показать no_picture.png, если запрашиваемого изображения не существует. Я должен сделать это с .htaccess. Большое спасибо.

Ответ 1

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /no_picture.png [L]

Позвольте разбить его на то, что означает каждая строка.

RewriteCond %{REQUEST_URI} \.(jpg|jpeg|gif|png|ico)$ [NC]

Убедитесь, что запрошенный файл имеет расширение файла в круглых скобках (). В этом случае мы тестируем, заканчивается ли имя файла в .jpg, .jpeg, .gif, .png или .ico

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Убедитесь, что файл отсутствует, а также не каталог.

RewriteRule .*$ /no_picture.png [L]

Если запрашиваемый ресурс/файл передает все те тесты, то это изображение, которое не существует. Поэтому верните изображение no_picture.png в браузер. Это сохранит имя файла. Если вы хотите перенаправить имя файла no_picture.png, измените [L] на [R]

Ответ 2

это также должно работать:

<FilesMatch "\.(jpg|jpeg|png|gif)$">
ErrorDocument 404 "/no_picture.png"
</FilesMatch>

Ответ 3

RewriteCond %{REQUEST_URI}  pic/(.*)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule pic/(.*)            pic/no_picture.png [L,E=STATUS:404]

Ответ 4

В вашем/images/каталоге добавьте это в свой .htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule no_picture.png [L]

Это говорит о том, что если запрошенный файл не существует, перепишите его на no_picture.png