mod_rewrite之后的jpg文件的HTTP头

Bri*_*ian 3 php apache mod-rewrite jpeg header

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

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

我已经尝试明确设置Content-Type: image/jpeg标题,但仍然没有我的图像返回正确的标题 - 虽然大多数确实正确显示,但我不知道为什么.

如何确保在重定向时通过正确的标头发送JPG文件mod_rewrite

Rob*_*bri 10

这就是你能做的.创建一个PHP文件,该文件将获取正确的文件并将其传递通过

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

echo file_get_contents($sImage);
Run Code Online (Sandbox Code Playgroud)

要么

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

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

fpassthru($rFP);
exit;
Run Code Online (Sandbox Code Playgroud)

  • `fpassthru()`是一个更好的选择,你不需要将整个文件加载到内存中. (2认同)

Gum*_*mbo 9

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

RewriteRule … … [T=image/jpeg]
Run Code Online (Sandbox Code Playgroud)