php - mod_rewrite 后 jpg 文件的 HTTP header

标签 php apache mod-rewrite header jpeg

我正在使用 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/

相关文章:

php - 如何从局域网中连接的另一台计算机访问php页面

apache - 为什么我的 .htaccess 仅针对 https/ssl 没有将 uri 路径重定向到 index.php?

apache - 301 将单个页面的 HTTPS 重定向到 HTTP

wordpress - 尝试使用 htaccess 重定向站点时出现 "Too many redirects"

php - 在 php 中, 'double greater than' 符号是什么意思?

php - Docker 和命令 docker-php

PHP 和 MySQL 设计 map 搜索站点

regex - 如果找不到图像,则显示自定义图像

apache - 使用 apache + mod_rewrite 重写基于访问日志 - 可能吗?

php - 具有 php 属性的 JoinColumns/复合键