Не показывать фото.png by.htaccess, если изображение не существует

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

4 ответов


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] to [R]


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

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

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

в каталоге /images/ добавьте это в свой каталог .реврайт

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

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