为了通过显示no_image.png
。htaccess(如果图像不存在)我使用:
RewriteEngine On
RewriteCond %{REQUEST_URI} '.(jpg|jpeg|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*$ /images/no_image.png [L]
但是,这不能解析以下URL格式的图像:
www.domain.com/t.php?src=p/dd5e5b08_1.jpg
我想通过显示no_image.png
。如果在上面的示例URL中没有检测到图像,则使用htaccess请提供解决方案,谢谢
REQUEST_URI
以t.php
结束,而不是图像扩展,因为查询字符串不是URI的一部分,因此重写规则不会检查。您应该使用%{QUERY_STRING}
来检查查询字符串。
如果url是http://www.domain.com/p/dd5e5b08_1.jpg
,而/p/dd5e5b08_1.jpg
在服务器上不存在,你会用你当前的规则得到/images/no_image.png
。
也就是说,看起来您正在使用PHP来加载图像,在这种情况下,使用PHP来确定文件是否存在,如果不存在则提供默认值,而不是.htaccess
文件。
REQUEST_URI
不包括QUERY_STRING
部分的URL,所以你的.htaccess
规则不适用于此。我看到你正在通过php脚本调用图像,所以我建议你检查这个图像文件是否存在于你的php脚本中,如果没有,你重定向或写no_image.png内容。
t.p php的简单代码:
<?php
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_GET["src"])) {
header("Location:".$_GET["src"]);
} else {
header("Location:/images/no_image.png");
}
?>
或者您也可以使用header('Content-Type: image/png')
echo
图像文件的内容