Замените неверный URL-адрес изображения на 404
Я не знаю, возможно ли это или нет, у меня есть хост изображения, который я сделал сам. Мне нужны последние настройки.
Всякий раз, когда изображение было удалено или это неверный URL-адрес изображения, он должен заменить изображение 404, так, например, если кто-то добавит это:
http://imagehosturl.com/i/34njk5n.jpg
Но это неверная ссылка, поэтому мне нужно ее показать:
http://imagehosturl.com/img/notfound.jpg
Что это такое:
alt text http://tinypic.com/images/404.gif
Я знаю, что .htaccess
может сделать это с ним ErrorDocument 404
, но у меня есть один, когда пользователь обращается к недопустимой странице, поэтому он будет показывать страницу 404.
Поэтому всякий раз, когда пользователь ссылается на изображение, и он недействителен или удаляется, мне нужно, чтобы он был заменен 404 изображением.
Как я могу это сделать?
Ответы
Ответ 1
Здесь один потенциальный ответ:
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" для script (perl, PHP, что угодно). Если запрошенный файл имеет расширение изображения (или имеет image/* mimetype; PHP предоставляет mime_content_type [us2.php.net] функция для этого; Я уверен, что есть многие способы сделать это в perl; Модуль MIME:: Типы [search.cpan.org] является одним из способов), затем установите Заголовок Content-Type для типа mimetype вашего логотипа и вернуть содержание логотипа браузер.
http://www.webmasterworld.com/forum92/3458.htm
Ответ 2
<FilesMatch ".(jpg|png|gif)$">
ErrorDocument 404 "/path/to/image.jpg"
</FilesMatch>
Ответ 3
С Apache вы можете несколько файлов .htaccess. Итак, если все ваши изображения хранятся в одном каталоге, создайте файл .htaccess
внутри этого каталога и добавьте
ErrorDocument 404 /img/notfound.jpg
Это создаст настраиваемое перенаправление 404, которое будет применяться только к вашему каталогу изображений, а также к его подкаталогам.
Ответ 4
Вы можете использовать ErrorDocument с директивой FilesMatch
<filesMatch "\.(jpg|png|gif)$">
ErrorDocument 404 /image.jpg
</filesMatch>
Это покажет /image.jpg, если 404-образный uri с расширением jpg png или gif просил.
вы также можете добавить свой собственный образ или html-разметку в файл errordocument:
<filesMatch "\.(jpg|png|gif)$">
ErrorDocument 404 '<img src="image.jpg">'
</filesMatch>
Ответ 5
В соответствии с ответом 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);
?>