我正在尝试重写一个PHP文件,该文件在浏览器中动态显示图像到.jpeg,因此它看起来像图像路径。
我的问题是,在引入重写规则后,图像会中断。当我检查源代码时,图像路径是正确的,但我看到的只是“损坏的图像图标”。
非常感谢帮助!
这是.htaccess
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^images/([a-zA-Z0-9_-]+)\.jpeg$ image.php?id=$1
这是PHP / HTML代码:
<?php
$imgname = ($_GET["id"]) . ".jpeg";
$imgpath = "images/" . $imgname;
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
if (file_exists($imgpath)) {
echo "<img src='" . $imgpath . "'" . " alt='image'></img>";
} else {
header("HTTP/1.0 404 Not Found");
}
?>
</body>
</html>
答案 0 :(得分:1)
您无法使用HTML内容投放图片。
以下是您的脚本如何正确传递图像的极简主义版本。
<?php
header('Content-Type: image/jpeg');
readfile('images/' . $_GET['id'] . '.jpeg');
当然,您可以将支票放入其中,但请记住,如果出现错误而不是网页,您必须提供另一张图片。
答案 1 :(得分:0)
后:
$imgname = ($_GET["id"]) . ".jpeg";
$imgpath = "images/" . $imgname;
添加:
if(file_exists($imgpath)) {
header("Content-type: image/jpeg");
readfile($imgpath);
exit;
}
header("HTTP/1.0 404 Not Found");
不要在那里使用任何HTML - 因为JPEG请求服务器应该仅使用标题和实际图像内容进行响应。