Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apache目录列表_Php_Apache - Fatal编程技术网

Php Apache目录列表

Php Apache目录列表,php,apache,Php,Apache,我想允许某些目录的目录列表,但我想阻止任何下载 基本上,dir结构是 新西兰标准 ->Alt.binaries.mp3 ->Alt.binaries.tv ->Alt.binaries.multimedia 子目录中的文件是.zip文件 我希望用户能够查看子目录的内容,但不允许任何下载 我在网上搜索了一下,但找不到任何相关的东西 提前感谢您的帮助。使用RedirectMatch语句阻止对与正则表达式匹配的任何目录或文件的访问,并将其发送到特定url。最好将它们发送到当前正在浏览的url Redi

我想允许某些目录的目录列表,但我想阻止任何下载

基本上,dir结构是

新西兰标准 ->Alt.binaries.mp3 ->Alt.binaries.tv ->Alt.binaries.multimedia

子目录中的文件是.zip文件

我希望用户能够查看子目录的内容,但不允许任何下载

我在网上搜索了一下,但找不到任何相关的东西


提前感谢您的帮助。

使用RedirectMatch语句阻止对与正则表达式匹配的任何目录或文件的访问,并将其发送到特定url。最好将它们发送到当前正在浏览的url

RedirectMatch regex url

有几种方法可以做到这一点

  • 使用上面提到的重定向匹配
  • 使用mod_rewrite重写对index.php的所有调用
  • 将文件夹移到文档根目录之外,并作为脚本工作的结果显示该文件夹
  • 选项二和选项三将要求您编写一个脚本来列出文件夹内容。这是一个非常简单的脚本,你可以在

    
    
    第三个选项将要求web服务器上的最低权限。它的工作原理如下:

  • 您的网站位于服务器文件夹/home/you/public\u html中。将文件夹放在/home/You/uploads中
  • 想要查看文件夹内容的客户端进入页面www.yourdomain.com/folder.php?folder=xxx
  • 将PHP变量的“folder”值(xxx)映射到文件夹名称
    • 您必须确保XX与../../../etc不同,这将列出etc文件夹的内容。使用映射表(1=>yourfolder1等)或确保一切都发生在uploads文件夹中
  • 列出文件夹条目,最终提供指向子文件夹的链接(www.yourdomain.com/folder.php?folder=yyy等)
  • 你看:)
  • 第三个选项(mod rewrite)基本相同,但文件夹名称由mod rewrite模块给出(将www.yourdomain.com/uploads/xxx转换为www.yourdomain.com/folder.php?folder=xxx的重写规则)

    总结:

    第一个选项通过将文件名重定向到某个文件(如yourdomain.com/403.php)来禁止下载文件名。它依靠web服务器来显示列表,并让他处理其余的事情

    第二个和第三个方法(可能是ofc的组合)创建自己的目录列表。如果您希望在其中应用某些布局,这是唯一的选项。建议的方法是将文件夹放在文档根目录之外,这样即使脚本失败,用户也无法下载任何文件(对于web服务器,不会有这样的文件,因为它们位于文档根目录之外)。您必须确保不允许用户在服务器上显示任何文件夹(这很危险)

    <?php
    $d = dir("/etc/php5");
    echo "Handle: " . $d->handle . "\n";
    echo "Path: " . $d->path . "\n";
    while (false !== ($entry = $d->read())) {
       echo $entry."\n";
    }
    $d->close();
    ?>