如何创建一个列出所有文件/目录的简单index.html文件?

Dav*_*d B 30 html webserver

我们使用不允许目录列表的Web服务器.

有一个特定的目录我想允许列出.

如何制作一个包含此目录内容的简单HTML文件?

ccp*_*zza 39

有足够的正当理由在apache或其他Web服务器中显式禁用自动目录索引.或者,例如,您可能希望仅在索引中包含某些文件类型.在这种情况下,您可能仍希望为特定文件夹提供静态生成的index.html文件.

这可以通过轻松实现- 这是一种在大多数Linux发行版(例如ubuntu/debian :)上可用的简约实用程序,sudo apt install tree其中包括生成XML,JSON或HTML输出.

生成一级深度的HTML目录索引:

tree -H '.' -L 1 --noreport --charset utf-8 > index.html
Run Code Online (Sandbox Code Playgroud)

仅包含与glob模式匹配的特定文件类型,例如*.zip文件:

tree -H '.' -L 1 --noreport --charset utf-8 -P "*.zip" > index.html
Run Code Online (Sandbox Code Playgroud)

参数to -H将用作基本href,因此您可以传递相对路径,例如.来自Web根目录的绝对路径,例如/files.-L 1仅将列表限制为当前目录.

我想索引生成器,我可以风格我想要的方式,所以结束了使用这个脚本 -除了具有自定义样式,脚本也将递归生成index.html所有嵌套子目录文件.

  • 优秀的解决方案!!!如果您想在`index.html`文件中省略目录,请在`tree`命令中添加--prune` (2认同)
  • 受你的脚本启发,我写了 [https://github.com/yencarnacion/html4tree](https://github.com/yencarnacion/html4tree)。html4tree 是用 Kotlin 编写的。 (2认同)
  • 对于部署像 GitLab Pages 这样的站点来说,这是一个很好的解决方案,它只允许静态 Web 内容(即没有 php),并且不允许使用 .htaccess。 (2认同)

ryr*_*yan 27

对我来说PHP是最简单的方法:

<?php
echo "Here are our files";
$path = ".";
$dh = opendir($path);
$i=1;
while (($file = readdir($dh)) !== false) {
    if($file != "." && $file != ".." && $file != "index.php" && $file != ".htaccess" && $file != "error_log" && $file != "cgi-bin") {
        echo "<a href='$path/$file'>$file</a><br /><br />";
        $i++;
    }
}
closedir($dh);
?> 
Run Code Online (Sandbox Code Playgroud)

将其放在您的目录中,并设置您希望它在$ path上搜索的位置.第一个if语句将隐藏您的php文件和.htaccess以及错误日志.然后它将显示带有链接的输出.这是非常简单的代码,易于编辑.

  • 这有多个存储的XSS漏洞:文件名可以包含引号和<>等. (7认同)
  • 工作就像一个魅力. (4认同)

小智 7

您是否尝试通过 .htaccess 允许该目录访问?

Options +Indexes
Run Code Online (Sandbox Code Playgroud)

我将其用于我的某些目录,其中目录列表被我的提供商禁用

  • 这是我的第一选择,但是 apache 服务器超出了我的控制范围,并且似乎 `.htaccess` 被禁用了。添加此类“.htaccess”时出现“内部服务器错误”。 (3认同)

Dud*_*lul 6

您可以:编写服务器端脚本页面,如PHP,JSP,ASP.net等,以动态生成此HTML

要么

设置您正在使用的Web服务器(例如Apache),以便为不包含welcome-page的目录(例如index.html)自动执行此操作

特别是在apache中,请阅读更多内容:编辑httpd.conf:http://justlinux.com/forum/showthread.php?s =& postid = 502789#post502789

或添加autoindex mod:http: //httpd.apache.org/docs/current/mod/mod_autoindex.html


des*_*est 6

有一个由 Celeron Dude 制作的免费 php 脚本可以做到这一点,称为 Celeron Dude Indexer 2。它不需要.htaccess源代码很容易理解并提供了一个很好的起点。

这是一个下载链接:https : //gitlab.com/desbest/celeron-dude-indexer/

赛扬老兄索引器