0

我正在尝试重写一个 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>
4

2 回答 2

1

您不能提供带有 HTML 内容的图像。

以下将是您的脚本如何正确传递图像的极简版本。

<?php
header('Content-Type: image/jpeg');
readfile('images/' . $_GET['id'] . '.jpeg');

当然,您可以将支票放入其中,但请记住,如果出现错误,您必须提供另一张图片,而不是网页。

于 2013-08-27T16:48:33.050 回答
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 请求服务器应该只响应标头和实际图像内容。

于 2013-08-27T16:48:03.323 回答