.htaccess重写引擎,在URL中显示no_image.png


.htaccess Rewrite Engine ON, show no_image.png in URL

为了通过显示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_URIt.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图像文件的内容