如何使用htaccess文件从文件夹中读取图像

时间:2010-09-03 06:51:47

标签: php apache .htaccess

我正在使用readfile函数来读取图像文件。它适用于大多数情况,除非图像位于具有htaccess文件的目录中。

以下是一个例子:

header("Content-type: image/jpeg");
ob_clean(); // clean output buffer
flush(); // flush output buffer 
readfile("http://127.0.0.1/WebProjects/project1/data/media/images/original/7.jpg");
exit;

htaccess位于http://127.0.0.1/WebProjects/project1/目录中,如下所示:

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

如何解决这个问题? htaccess文件必须在那里,因为该文件夹中的Web应用程序需要它才能工作。

3 个答案:

答案 0 :(得分:3)

为什么不直接从文件系统读取文件而不是通过Web服务器?

readfile("/srv/WebProjects/project1/data/media/images/original/7.jpg");

答案 1 :(得分:0)

更有可能的是,您的图像具有对apache的读取权限,但对于运行PHP的人没有读取权限。

尝试将图像的权限设置为0644。

答案 2 :(得分:-1)

RewriteCond %{REMOTE_ADDR}="127.0.0.1"

在其他人之前使用REMOTE_ADDR作为新的RewriteCond来跳过它们。 由于你的exec代码是本地的,它也将来自127.0.0.1,应该整齐地进行。