2011-01-07 221 views
0

我试图保持私人文件夹,但允许html文件访问该文件中包含的内容。htaccess目录问题

例如,在私人文件夹中的.htaccess包含
为了否认,允许
所有
拒绝允许从127.0.0.1

里面,有一个名为“hidden.jpg”

图像

以外的私人文件夹,我想打一个HTML文件与线
<img src='private/hidden.jpg'>

不幸的是,我无法看到图像。任何想法在更好的方式来做到这一点?我也试过把这个文件放在web目录之外,并用file_get_contents()来抓取它,但是这并没有正确抓取整个文件(当播放以这种方式访问​​的.ogv文件时,HTML5视频播放器会中断)

任何帮助非常感激。

+0

我不能相信file_get_contents()没有获得所有的文件内容,你可以使用readfile()代替file_get_contents()http://www.php.net/manual/en/function.readfile.php – 2011-01-07 20:47:29

+0

readfile over file_get_contents()不是问题。问题在于HTML5视频播放器无法播放动态投放的视频。 – user490895 2011-01-07 22:10:23

+0

如果它是相关的,ogv文件使用ffmpeg2theora-0.27 – user490895 2011-01-07 22:13:14

回答

0

你的帖子有点含糊,所以我会尽我所能回答它。

你必须记住,.htaccess的是服务器双面。而HTML请求(如IMG标记)是客户端的,这意味着它完全不同的HTTP请求获取该图像标记。允许从127.0.0.1允许服务器打开它,但不允许任何客户端(因为浏览器,除非在服务器上,将永远是另一个IP地址)。

您的HTACCESS代码将只允许图像被服务器访问(这是毫无意义的)。 HTACCESS用于过滤/控制/编辑HTTP请求,这是浏览器所做的。实际上,您的HTACCESS配置将不会允许任何人查看图像。

你想要完成的事情是不可能的;服务器将不知道哪个请求来自哪个HTML文件,并且始终总是会通过来欺骗该请求,让其他人访问该映像。

希望这会有所帮助!

1

尝试通过HTML文档访问文件与直接访问文件相同。如果您无法直接访问它,则无法将其放入<img>标签中。

.ogv文件有多大?如果文件太大,file_get_contents()将会失败,因为它会尝试将整个文件读入内存。尝试readfile()

但我仍然不确定你想在这里实现什么。即使您使用简单的PHP脚本从Web目录之外获取文件,任何知道该PHP脚本路径的人都可以像获取公共文件一样容易地获取该文件。它是否支持某种登录?

0

老问题,但这可能有助于某人。如果你添加一个。htaccess文件的目录,并把这个里面:

Options -Indexes 

这将允许您访问个别URL目录的内容,但无法查看该目录本身。