拒绝直接访问文件夹或文件,但允许index.php访问它

时间:2018-03-18 02:48:30

标签: php .htaccess

我想阻止直接访问我网站上包含音乐的音乐文件夹。(我希望播放音乐,但不要下载)

但我也希望能够在浏览器上播放音乐,我使用.htaccess文件阻止访问,但正因为如此,我无法在浏览器上播放歌曲。

我的.htacces文件看起来像这样。它在音乐文件夹里面。

Order Deny,Allow
Deny from All
<FilesMatch "^$|(index)\.php$">
Allow from All
</FilesMatch>

有没有办法做到这一点,在直接访问文件夹时播放歌曲。

1 个答案:

答案 0 :(得分:0)

如果浏览器可以访问数据,根据定义,它是可下载的。但是,我通过以下方法在像你这样的情况下取得了一些成功:

创建一个music.php文件,它可以完成两件事: 1)检查&time;&#39;的请求,以及 2)使用file_get_contents()来提供内容(使用正确的内容类型),而不会泄露音乐目录的路径。

请求可能看起来像http://blah.com/music/50/1521342509/j25ia920oj12501

  • /music/不是目录,而是mod_rewrite条件/规则(在.htaccess文件中),将请求发送至music.php
  • /50/是实际的歌曲名称
  • 1521342509是音乐请求的unix时间戳...此时间戳后的任何请求可能是用户尝试的几秒钟。
  • j25ia920oj12501是同一时间戳的哈希值(sha256,在16个字符足够后被截断),以确保时间戳是真实的。

这远非万无一失,但完全有效地防止除了最专注/聪明的人以外的所有人下载你的东西。