2013-04-26 61 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')