web-dev-qa-db-ja.com

すべてのファイル/ディレクトリをリストする簡単なindex.htmlファイルを作成するにはどうすればよいですか?

ディレクトリリストを許可しないWebサーバーを使用します。

リストを許可したい特定のディレクトリがあります。

このディレクトリの内容を含む単純なHTMLファイルを作成するにはどうすればよいですか?

28
David B

次のいずれかを実行できます。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

7
DuduAlul

Apacheまたは他のWebサーバーで自動ディレクトリインデックスを明示的に無効にする十分な正当な理由があります。または、たとえば、特定のファイルタイプのみをインデックスに含めることができます。そのような場合でも、特定のフォルダー用に静的に生成されたindex.htmlファイルが必要な場合があります。

これは tree で簡単に実現できます-ほとんどのLinuxディストリビューションで利用可能な最小限のユーティリティ(例:ubuntu/debian:Sudo apt install tree)およびプレーンテキスト、XML、JSON、またはHTML出力を生成できます。

1レベル深いHTMLディレクトリインデックスを生成します。

tree -H '.' -L 1 --noreport --charset utf-8 > index.html

Globパターンに一致する特定のファイルタイプのみを含めます。 *.Zipファイル:

tree -H '.' -L 1 --noreport --charset utf-8 -P "*.Zip" > index.html

-Hへの引数はベースhrefとして使用されるものなので、.などの相対パスまたは/filesなどのWebルートからの絶対パスを渡すことができます。 -L 1は、リストを現在のディレクトリのみに制限します。

思い通りのスタイルにできるインデックスジェネレータが必要だったので、 このスクリプト を使用することになりました。カスタマイズ可能なスタイリングに加えて、スクリプトはすべてindex.htmlファイルも再帰的に生成しますネストされたサブディレクトリ。

37
ccpizza

私にとっては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);
?> 

これをディレクトリに配置し、$ pathで検索する場所を設定します。最初のifステートメントは、phpファイルと.htaccessおよびエラーログを非表示にします。次に、リンク付きの出力を表示します。これは非常にシンプルなコードで、編集が簡単です。

24
ryryan

.htaccess経由でこのディレクトリに許可しようとしましたか?

Options +Indexes

プロバイダーによってディレクトリ一覧が無効になっているディレクトリの一部でこれを使用します

2
Michael

これは純粋なHTMLではできません。

ただし、ApacheサーバーでPHPにアクセスした場合(投稿 "Apache"にタグを付けた))簡単に実行できます- se the PHP = glob function 。そうでない場合-あなたはサーバーサイドインクルードを試すかもしれません-それはApacheのものであり、私はそれについてあまり知りません。

1
Michael Banzon