0

为了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

如果在上面的示例 URL 中未检测到图像,我想显示no_image.png.htaccess请提供解决方案并感谢

4

2 回答 2

1

REQUEST_URI结尾t.php,而不是图像扩展名,因为查询字符串不是 URI 的一部分,因此不会被您的重写规则检查。您应该使用%{QUERY_STRING}来检查查询字符串。

http://www.domain.com/p/dd5e5b08_1.jpg如果服务器上存在或/p/dd5e5b08_1.jpg不存在url ,您将/images/no_image.png使用当前规则获得。

也就是说,看起来您正在使用 PHP 来加载图像,在这种情况下,使用 PHP 来确定文件是否存在并在不存在时提供默认值而不是.htaccess文件是合适的。

于 2013-04-26T06:01:33.743 回答
0

REQUEST_URI不包含QUERY_STRING您的 URL 的一部分,因此您的.htaccess规则不适用于此。我看到您正在通过 php 脚本调用图像,因此我建议您检查该图像文件是否存在于您的 php 脚本中,如果不存在,则重定向或写出 no_image.png 内容。

t.php 的简单代码:

<?php

if (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$_GET["src"])) {
  header("Location:".$_GET["src"]);
} else {
  header("Location:/images/no_image.png");
}

?>

或者您也可以echo使用图像文件的内容header('Content-Type: image/png')

于 2013-04-26T06:20:26.807 回答