Замените недействительный URL-адрес изображения 404 - PullRequest
21 голосов
/ 25 октября 2010

Я не знаю, возможно ли это, у меня есть хост изображений, который я сделал сам.Мне нужны последние настройки.

Всякий раз, когда изображение было удалено или является недействительным URL-адресом изображения, оно должно быть заменено изображением 404, например, если кто-то добавляет это:

http://imagehosturl.com/i/34njk5n.jpg

Но это недействительная ссылка, поэтому мне нужно показать:

http://imagehosturl.com/img/notfound.jpg

Чтонапример:

альтернативный текст http://tinypic.com/images/404.gif

Я знаю, что .htaccess может сделать это с помощью ErrorDocument 404, но у меня уже есть такой, когда пользователь получает доступ к недопустимой странице,так что он будет отображать страницу 404.

Поэтому, когда пользователь делает ссылку на изображение и оно недействительно или удаляется, мне нужно заменить его на изображение 404.

Как это сделать

Ответы [ 5 ]

41 голосов
/ 25 октября 2010

Вот один из возможных ответов:

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule \.(gif|jpe?g|png|bmp) /path/to/logo.gif [NC,L]

Другой - использовать пользовательскую страницу со сценарием:

Использовать директиву errorDocument (задокументировано на [httpd.apache.org])указать ошибку «404» на скрипт (perl, PHP, что угодно).Если запрошенный файл имеет расширение изображения (или имеет изображение / * mimetype; PHP предоставляет для этого функцию mime_content_type [us2.php.net]; я уверен, что есть много способов сделать это в perl; MIME ::Модуль Types [search.cpan.org] является односторонним), затем установите заголовок «Content-Type» для mimetype вашего изображения логотипа и верните содержимое логотипа в браузер.

http://www.webmasterworld.com/forum92/3458.htm

19 голосов
/ 29 мая 2012
<FilesMatch ".(jpg|png|gif)$">
ErrorDocument 404 "/path/to/image.jpg"
</FilesMatch>
16 голосов
/ 25 октября 2010

В Apache вы можете иметь несколько файлов .htaccess . Итак, если все ваши изображения хранятся в одном каталоге, создайте файл .htaccess внутри этого каталога и добавьте

ErrorDocument 404 /img/notfound.jpg

Это создаст пользовательский редирект 404, который будет применен только к вашему каталогу изображений, плюс его подкаталоги.

5 голосов
/ 10 ноября 2016

Вы можете использовать ErrorDocument с директивой FilesMatch

<filesMatch "\.(jpg|png|gif)$">
ErrorDocument 404 /image.jpg 
</filesMatch>

Это покажет / image.jpg , если 404 изображения URI с jpg png *Требуется расширение 1009 * или gif .

Вы также можете добавить свое пользовательское изображение или html-разметку к ошибке:

<filesMatch "\.(jpg|png|gif)$">
ErrorDocument 404 '<img src="image.jpg">'
</filesMatch>
1 голос
/ 19 сентября 2015

Согласно и в дополнение к ответу AdamH, вы должны вывести 404 header.Вот что я использую:

.htaccess

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule \.(gif|jpe?g|png|bmp) /upload/image404.php [NC,L]

image404.php

<?php
    $file = 'image404.jpg';
    $type = 'image/jpeg';
    header("HTTP/1.0 404 Not Found");
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...