用404图像替换无效的图像网址

时间:2010-10-25 18:03:53

标签: .htaccess http-status-code-404

我不知道这是否可能,我有一个我自己制作的图像主机。我需要对它进行一些最后的调整。

每当图片被删除或图片网址无效时,都应该替换为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图片。

我该怎么做?

5 个答案:

答案 0 :(得分:40)

这是一个可能的答案:

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,无论如何)。如果是请求的文件   有一个图像扩展(或有一个   image / * mimetype; PHP供应   mime_content_type [us2.php.net]   这个功能;我确定有   在perl中有很多方法可以做到这一点;该   MIME :: Types [search.cpan.org]模块   是一种方式),然后设置   mimetype的“Content-Type”标头   您的徽标图片并返回   logoimage的内容   浏览器。

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

答案 1 :(得分:19)

<FilesMatch ".(jpg|png|gif)$">
ErrorDocument 404 "/path/to/image.jpg"
</FilesMatch>

答案 2 :(得分:16)

使用Apache,您可以拥有multiple .htaccess files。因此,如果您的所有图像都存储在同一目录中,请在该目录中创建一个.htaccess文件并添加

ErrorDocument 404 /img/notfound.jpg

这将创建一个自定义404重定向,该重定向仅应用于您的图像目录及其子目录。

答案 3 :(得分:4)

您可以将ErrorDocument与FilesMatch指令一起使用

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

如果带有 jpg png gif 扩展名的404图片uri,则会显示 /image.jpg 请求。

您还可以将自定义图像或html标记添加到errordocument:

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

答案 4 :(得分:1)

根据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);
?>