我正在使用 Apache 的 mod_rewrite
将对 JPG 文件的请求路由到我的网络根目录之外的目录。
总体上没问题,但有少数图片不显示。然后我意识到,当我在图像 URL 上使用 PHP 的 get_headers()
函数时,它们都返回了
内容类型:文本/html; charset=UTF-8
而不是正确的 image/jpeg
header 类型。
我已尝试显式设置 Content-Type: image/jpeg
header ,但我的图像仍然没有返回正确的 header - 虽然大多数显示正确,但我不确定为什么。
当通过 mod_rewrite
重定向时,如何确保发送的 JPG 文件带有正确的 header ?
最佳答案
这就是你可以做的。创建一个 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;
或在您的 Apache 虚拟主机配置或 .htaccess 文件中
RewriteRule … … [T=image/jpeg]
关于php - mod_rewrite 后 jpg 文件的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1558753/