Заголовки HTTP для файлов jpg после mod_rewrite

Я использую Apache mod_rewriteдля маршрутизации запросов на файлы JPG в каталог за пределами моего веб-корня.

Обычно это было хорошо, но есть несколько изображений, которые не отображаются. Затем я понял, что когда я использую get_headers()функцию PHP в URL-адресах изображений, все они возвращаются
Content-Type: text/html; charset=UTF-8вместо правильных image/jpegтипов заголовков.

Я попытался явно установить Content-Type: image/jpegзаголовок, и тем не менее, ни одно из моих изображений не возвращает правильные заголовки - хотя большинство из них отображаются правильно, но я не уверен, почему.

Как я могу убедиться, что файл JPG отправляется с правильным заголовком при перенаправлении через mod_rewrite?

13.10.2009 07:46:00
3 ОТВЕТА
РЕШЕНИЕ

Это то, что вы могли бы сделать. Создайте файл PHP, который получит нужный файл и пропустит его через

<?php 
$sImage = 'imagename.jpg';
header("Content-Type: image/jpeg");
header("Content-Length: " .(string)(filesize($sImage)) );

echo file_get_contents($sImage);

или

<?php
$sImage = 'imagename.jpg';
$rFP = fopen($sImage, 'rb');

header("Content-Type: image/jpeg");
header("Content-Length: " .(string)(filesize($sImage)) );

fpassthru($rFP);
exit;
10
13.10.2009 19:20:26
fpassthru()Это лучший вариант, вам не нужно загружать весь файл в память.
Lukáš Lalinský 13.10.2009 08:51:01
Спасибо, я определил заголовки, используя PHP с функцией fpassthru.
Brian 15.10.2009 23:05:32

Вы также можете установить поле заголовка Content-Type с помощью mod_rewrite с Tфлагом:

RewriteRule   [T=image/jpeg]
9
13.10.2009 08:00:06
Большое спасибо, очень полезно.
Brian 15.10.2009 23:06:28

Как насчет изображения, которое не является .jpg. Как .gif, ...

Вам нужно будет использовать mime_content_type () (который устарел) или расширение fileinfo, чтобы определить, какой тип содержимого отправлять.

Изменить: я не рекомендую это, но если вы работаете с определенным подмножеством расширений файлов, вы также можете создать небольшой словарный массив типов содержимого и использовать расширение файла, чтобы определить, какое из них отправлять.

0
22.11.2010 18:49:49