2013-04-26 30 views
0

显示no_image.png为了通过的.htaccess显示no_image.png(如果不存在图像)我使用:的.htaccess重写引擎ON,在URL

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请PR ovide解决方案,谢谢

回答

1

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

如果网址是http://www.domain.com/p/dd5e5b08_1.jpg/p/dd5e5b08_1.jpg在服务器上不存在,您将得到/images/no_image.png而不是您当前的规则。

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

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')