htaccess目录问题

时间:2011-01-07 20:37:09

标签: php .htaccess private file-get-contents

我正在尝试将文件夹保密,但允许html文件访问该文件中包含的内容。

例如,私人文件夹中的.htaccess包含
命令拒绝,允许
否认所有人 允许来自127.0.0.1

在里面,有一个名为'hidden.jpg'的图像

在私人文件夹之外,我想创建一个带有行的html文件 <img src='private/hidden.jpg'>

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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

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

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

但我仍然不确定你在这里想要达到的目标。即使您使用简单的PHP脚本从Web目录外部获取文件,任何知道该PHP脚本路径的人都能够像公共文件一样轻松地获取该文件。它是否落后于某种登录?

答案 1 :(得分:0)

你的帖子有点模糊,所以我会尽力回答。

您必须记住,HTACCESS是服务器端。 HTML请求(例如IMG标记)是客户端支持,这意味着它完全不同于获取该图像标记的HTTP请求。允许来自127.0.0.1允许服务器打开它,但不允许任何客户端打开(因为浏览器,除非在服务器上,否则将始终是另一个IP地址)。

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

你想要完成的是不可能的;服务器不知道哪个请求来自哪个HTML文件,总是,总是,总是是欺骗该请求以让某人访问该图像的方法。

希望这有帮助!

答案 2 :(得分:0)

老问题,但这可能对某人有所帮助。如果将.htaccess文件添加到目录并将其放入其中:

Options -Indexes

它允许您通过单个URL访问目录的内容,但不能查看目录本身。