.htaccess 用404图像替换无效的图像url

.htaccess 用404图像替换无效的图像url,.htaccess,http-status-code-404,.htaccess,Http Status Code 404,我不知道这是否可能,我有一个自己制作的图像主机。我需要最后的一些调整 每当图像被删除或是无效的图像url时,它都应替换为404图像,例如,如果有人添加以下内容: 但这是一个无效链接,所以我需要它显示: 这是这样的: 我知道.htaccess可以通过它的ErrorDocument 404实现这一点,但当用户访问无效页面时,我已经有了一个,所以它会显示404页面 所以,每当用户热链接一个图像,它是无效的或被删除,我需要它被替换为404图像 我怎样才能做到这一点呢?这里有一个可能的答案: Rew

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

每当图像被删除或是无效的图像url时,它都应替换为404图像,例如,如果有人添加以下内容:

但这是一个无效链接,所以我需要它显示:

这是这样的:

我知道
.htaccess
可以通过它的
ErrorDocument 404
实现这一点,但当用户访问无效页面时,我已经有了一个,所以它会显示404页面

所以,每当用户热链接一个图像,它是无效的或被删除,我需要它被替换为404图像


我怎样才能做到这一点呢?

这里有一个可能的答案:

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内容类型[us2.php.net] 功能;我相信有 在perl中有许多实现这一点的方法 MIME::Types[search.cpan.org]模块 是单向的),然后设置 mimetype的“内容类型”标题 返回您的徽标图像,然后返回 将logoimage的内容添加到 浏览器

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

ErrorDocument 404 /img/notfound.jpg
这将创建一个自定义404重定向,该重定向仅应用于图像目录及其子目录。


<FilesMatch ".(jpg|png|gif)$">
ErrorDocument 404 "/path/to/image.jpg"
</FilesMatch>
ErrorDocument 404“/path/to/image.jpg”
除了AdamH的答案,您还应该输出
404标题
。这是我用的

.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);
?>

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

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

ErrorDocument 404/image.jpg
如果请求扩展名为jpgpnggif的404图像uri,则将显示/image.jpg

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

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

错误文档404“

你可以尝试修改你的
.htaccess
以抛出一个
404页面
查找除图像文件以外的所有缺失文件,这将得到你的
404图像
。谢谢。为了防止链接更改或不可用,答案中似乎已经这样做了:“注意:在“!”之前需要有一个空格,并且所有的“?”字符都必须是实心的管道,而不是断开的管道”绝对最好发送到脚本而不是图像,因为以这种方式发送到图像不会发送
404
头。如果您将其发送到脚本,脚本可以同时输出
404
标题和图像本身,让您两全其美。喜欢“jpe?g”解决方案!:)此解决方案不保留404状态代码。这将起作用,我没有想到这一点。在你之前接受了答案。对不起,伙计,这是个好办法。它很简单,保留了404标题,并且不需要将图像全部放在一个文件夹中。它可以工作!实际上,我不知道您是否应该在404:apache附近放置“”,比如:操作将被视为:*要重定向到的本地URL(如果操作以“/”开头)*要重定向到的外部URL(如果操作是有效URL)。*要显示的文本(如果没有上述内容)。如果文本由多个单词组成,则必须用引号(“)括起来。这是最好的、非常优雅的解决方案!