获取目录内容但不显示目录

时间:2013-05-12 22:18:27

标签: php linux .htaccess

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

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

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

我也尝试过.htaccess modrewite,但是对于files目录,它也没有显示该文件。

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

6 个答案:

答案 0 :(得分:2)

索引:

  1. 禁用目录索引
  2. 重写:

    1. 条件:请求的文件不是文件(目录不是文件)
    2. 规则:重定向到文档根目录
    3. Options -Indexes
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^ / [R]

答案 1 :(得分:1)

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

答案 2 :(得分:1)

尽管如此,还是一个蹩脚的解决方法;你可以在目录中包含一个空的index文件。

您也可以在.htaccesshttpd.conf文件中添加此行:

IndexIgnore *

答案 3 :(得分:1)

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

Options -Indexes

.htaccess。有关Options的更多信息,请参阅documentation。请参阅Apache mod_autoindex module的文档以自定义索引页的显示。

答案 4 :(得分:0)

只需将index.php放入相关文件夹中,只需包含:

<?php

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

抛弃.htaccess

答案 5 :(得分: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文件的标头。它将在不打开文件夹视图的情况下下载文件。

希望它会对你有所帮助。