2013-04-26 3 views
0

Для того, чтобы показать no_image.png на .htaccess (если изображение не существует) Я использую:.htaccess Перепишите двигателя, покажи no_image.png в 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 

Я хотел бы показать no_image.png корыта .htaccess если изображение не обнаружен в URL образца выше Пожалуйста пр ovide solution and thanks

ответ

1

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.

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

Смежные вопросы