我试图将文件夹设为私有,但允许 html 文件访问该文件中包含的内容。
例如,私有文件夹中的.htaccess包含
订单拒绝,允许
所有人都否认
允许来自 127.0.0.1
里面有一张名为“hidden.jpg”的图片
在私人文件夹之外,我想用以下行制作一个html文件
<img src='private/hidden.jpg'>
不幸的是,我看不到图像。关于更好的方法来做到这一点有什么想法吗? 我还尝试将文件放在 Web 目录之外并使用 file_get_contents() 抓取它,但这并不能正确抓取整个文件(在播放以这种方式访问的 .ogv 文件时,HTML5 视频播放器会中断)
非常感谢任何帮助。
尝试通过 HTML 文档访问文件与直接访问它是一样的。如果您无法直接访问它,您也无法将其放入
<img>
标签中。
.ogv 文件有多大?如果文件太大,
file_get_contents()
将会失败,因为它会尝试将整个文件读入内存。尝试一下readfile()
。
但我仍然不确定你想在这里实现什么目标。即使您使用简单的 PHP 脚本从 Web 目录外部获取文件,任何知道该 PHP 脚本路径的人都可以轻松获取该文件,就像它是公开可用的一样。是否需要某种登录方式?
老问题,但这可能对某人有帮助。如果您将 .htaccess 文件添加到目录并将其放入其中:
Options -Indexes
它将允许您通过单独的 URL 访问目录的内容,但不能查看目录本身。
您必须记住,HTACCESS 是服务器端。 HTML 请求(例如 IMG 标签)是客户端,这意味着它是一个完全不同的 HTTP 请求来获取该图像标签。允许来自
127.0.0.1
就是允许 服务器 打开它,但不允许任何客户端打开它(因为浏览器,除非在服务器上,否则将始终是另一个 IP 地址)。
您的 HTACCESS 代码只允许服务器访问图像(这是毫无意义的)。 HTACCESS 是过滤/控制/编辑浏览器发出的HTTP 请求。事实上,您的 HTACCESS 配置不允许任何人查看图像。
你想要完成的事情是不可能的;服务器不会知道哪个请求来自哪个 HTML 文件,并且总会有办法欺骗该请求,让某人访问该图像。