mod_rewrite之后的jpg文件的HTTP头

时间:2009-10-13 07:46:01

标签: php apache mod-rewrite header jpeg

我正在使用Apache的mod_rewrite将JPG文件的请求路由到我的Web根目录之外的目录。

它通常很好,但有一些图像不显示。然后我意识到当我在我的图像URL上使用PHP的get_headers()函数时,它们都返回了 <{1}}而不是正确的Content-Type: text/html; charset=UTF-8标头类型。

我已尝试明确设置image/jpeg标题但仍然没有我的图片返回正确的标题 - 尽管大多数图片都显示正确,但我不确定原因。

如何通过Content-Type: image/jpeg重定向来确保JPG文件与正确的标头一起发送?

3 个答案:

答案 0 :(得分:9)

这是你能做的。创建一个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;

答案 1 :(得分:9)

您还可以使用带有T标志的mod_rewrite设置 Content-Type 标头字段:

RewriteRule … … [T=image/jpeg]

答案 2 :(得分:0)

  

不是.jpg的图像怎么样。像.gif,...

您需要使用mime_content_type()(已弃用)或fileinfo扩展名来确定要发送的内容类型。

编辑:我不建议这样做,但是如果您正在使用特定文件扩展名子集,您还可以创建一个内容类型的小字典数组,并使用文件扩展名来确定要发送哪个。< / p>