我正在使用Apache的mod_rewrite
将JPG文件的请求路由到我的Web根目录之外的目录。
它通常很好,但有一些图像不显示。然后我意识到当我在我的图像URL上使用PHP的get_headers()
函数时,它们都返回了
<{1}}而不是正确的Content-Type: text/html; charset=UTF-8
标头类型。
我已尝试明确设置image/jpeg
标题但仍然没有我的图片返回正确的标题 - 尽管大多数图片都显示正确,但我不确定原因。
如何通过Content-Type: image/jpeg
重定向来确保JPG文件与正确的标头一起发送?
答案 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>