htaccess打破我的图像?

时间:2013-08-27 16:43:28

标签: php .htaccess

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

2 个答案:

答案 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请求服务器应该仅使用标题和实际图像内容进行响应。