我不知道这是否可能,我有一个我自己制作的图像主机。我需要对它进行一些最后的调整。
每当图片被删除或图片网址无效时,都应该替换为404图片,例如,如果有人添加了此图片:
但这是一个无效的链接,所以我需要它来显示:
这是这样的:
alt text http://tinypic.com/images/404.gif
我知道.htaccess
可以使用ErrorDocument 404
执行此操作,但是当用户访问无效页面时我已经有了一个,因此它会显示404页面。
因此,每当用户对图片进行热链接并且图片无效或被删除时,我都需要将其替换为404图片。
我该怎么做?
答案 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的内容 浏览器。
答案 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);
?>