【发布时间】:2020-01-09 12:44:47
【问题描述】:
我这里有图片文件
/var/www/img/timetable.jpeg
网址是
www.mydomain.com/img/timetable.jpeg
但我不希望用户知道真实的 URL,我希望用户像这样访问文件
www.mydomain.com/get/timetable.jpeg
所以我使用 PHP 框架来拦截请求,例如无脂肪
$f3->route('GET /get/@filename',
function($f3) {
$filename=$f3->get('PARAMS.filename');
// here return/redirect the file
}
);
但我不想用这种方式。
$f3->route('GET /get/@filename',
function($f3) {
$filename=$f3->get('PARAMS.filename');
$attachment_location = 'img/'.$filename;
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public");
header("Content-Type: image/jpeg");
header("Content-Transfer-Encoding: Binary");
header("Content-Length:".filesize($attachment_location));
header("Content-Disposition: attachment; filename=".$filename);
readfile($attachment_location);
}
);
我期待这样的事情,但这是重定向,用户会知道 URL
$f3->route('GET /get/@filename',
function($f3) {
$filename=$f3->get('PARAMS.filename');
header("Location: img/".$filename);
}
);
我可以在 PHP 中执行此操作吗,是否调用 Forward?
【问题讨论】:
-
测试,浏览器仍然重定向到目标网址
-
Output an Image in PHP 的可能重复项。检查您的网络服务器是否支持
X-Sendfile(Apache) /X-Accel-Redirect(nginx)。