0

我有 Linux 主机,我只想通过其指定的 URL 获取文件,因为这些文件仅供注册用户使用。但是当我访问它的目录 URL 时,所有文件都会显示出来。

示例:www.site.com/files(这应该重定向到主页)

示例:www.site.com/files/filename.zip(这应该可以下载文件)

我也尝试了一个 .htaccess modrewite 但文件目录也没有显示文件。

任何想法,如何解决这个问题。

4

6 回答 6

2

索引:

  1. 禁用目录索引

改写:

  1. 条件:请求的文件不是文件(目录不是文件)
  2. 规则:重定向到文档根目录

Options -Indexes
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ / [R]

于 2013-05-12T22:24:37.083 回答
1

要关闭 apache 的自动生成的目录列表,添加

Options -Indexes

.htaccess. 有关更多信息,请参阅文档。Options请参阅 Apachemod_autoindex模块的文档以自定义索引页面的显示。

于 2013-05-12T22:27:00.633 回答
1

将目录权限更改为 711。您会说:包含您的文件的目录chmod 711 files在哪里。files您还可以添加一个名为的文件,该文件将在有人尝试访问时默认显示index.html的目录中。fileswww.site.com/files

于 2013-05-12T22:23:41.763 回答
1

然而,一个蹩脚的解决方法;您可以只在目录中包含一个空index文件。

你也可以在你的.htaccessorhttpd.conf文件中添加这一行:

IndexIgnore *
于 2013-05-12T22:24:07.300 回答
0

只需将直接下载链接替换为 download.php,如下所示:

<?php
$downloadfile = "files/filename.zip";
$filename = "filename.zip";
$filesize = filesize($downloadfile);

header("Content-Type: application/zip"); 
header("Content-Disposition: attachment; filename='$filename'"); 
header("Content-Length: $filesize");

readfile($downloadfile);
exit;
?>

您可以看到我们发送了一个带有 .zip 文件的标头。它将在不打开文件夹视图的情况下下载文件。

希望它会帮助你。

于 2013-05-12T22:27:56.187 回答
0

只需index.php在有问题的文件夹中放入一个,仅包含:

<?php

header('Location: http://'.$_SERVER['HTTP_HOST'].'/');
die;

并抛弃.htaccess.

于 2013-05-12T22:25:26.160 回答