如何允许使用 PHP 下载文件,但拒绝直接访问目录列表

How to allow downloading files with PHP, but deny direct access to directory listings

我在我的服务器上使用 Apache,我想让我的访问者免费下载资源。但是,为了保留一点带宽,我想拒绝直接访问资源的根文件夹,如下所示:

www.myhost.com/resources/file.wav

如果访问者从 URL 中删除 file.wav,他们可以同时访问所有声音,因此我会让人们疯狂地下载。我不要那个。

如何阻止用户进入该根目录和任何子文件夹?

最简单的方法,甚至不用弄乱 .htaccess(尽管这是个好主意)就是简单地将 index.html 文件放入文件夹并将其权限设置为 700 .

如果你只想关闭目录列表,你可以创建一个 htaccess 文件:

<Directory /path/to/directory>
   Options -Indexes
</Directory>

如果你想拒绝访问子目录,你可以使用这个:

<Files subdirectory/*>
    deny from all
</Files>

如果您只想允许访问 .wav 文件,您可以这样做:

<Files *.wav>
    allow from all
</Files>