ふにゃちん
1999/12/09(木) 15:53:00
>index.html が存在しない場合,そのディレクトリのファイル一覧HTML文を生成する
>という,たいていのWebサーバが持っている標準の機能を使用する。
究極の方法ですね。それなら、本当に何もする必要ないっす。
ただ、それだとあまりにも表示が味気ないので以下のようなCGIを作ってみました(動作確認すみ)。
--------------------------------
#!/usr/local/bin/perl
$h_dir = '/usr/local/etc/httpd/htdocs/imt'; # 対象ディレクトリ(フルパス)
$h_dir_url = '
http://nc3s26/imt'; # 対象ディレクトリ(URL)
$chars = 'x-sjis'; # 本スクリプトの文字コード(x-sjis/x-euc-jp)
$conv = 'sjis'; # 本スクリプトの文字コード(sjis/euc)
require './jcode.pl'; #日本語コードライブラリ
#########################################################
print "Content-type: text/html;CHARSET=$chars\n\n";
opendir(DIR,$h_dir);
foreach $dir (sort grep {!/^\./ && /\.html$/} readdir(DIR)){ # ディレクトリを読んで、[xxx.html]という名前の物のみ取りだし、ABC順にソート
open(DB,"$h_dir/$dir"); # 対象ファイルを開く
@files = <DB>;
close(DB);
$value = join('', @files);
$value =~ s/<TITLE>/<title>/g; # 小文字変換
$value =~ s/<\/TITLE>/<\/title>/g;#
$value =~ s/\r\n//g; # 改行削除
$value =~ s/\n//g; #
$value =~ s/\r//g; #
if ($value =~ /^(.*)<title>(.*)<\/title>(.*)/) {
$title = $2; # タイトル取りだし
} else {
$title = $dir; # タイトルがなければファイル名を表示
}
&jcode'convert(*title,$conv); # 日本語変換
print "<A HREF=\"$h_dir_url/$dir\">$title</A><BR>\n";
}
# END OF SCRIPT
ま、見た目はあまり変わらないけど、TITLEが表示される分、わかりやすいかなと。
フォントの指定なんかは、適当にアレンジしてください。