wwwsrchで特定のディレクトリーを検索させないようにするには?

[上に] [前に] [次に]
Moonlight [E-Mail] 2000/02/08(火) 12:38:48
以前にwwwsrchで特定のファイルを検索させないようにする質問をしましたが、今回は 特定のディレクトリーを検索させないようにしたいのですが どうしたら良いでしょう?

びぎな++ 2000/02/08(火) 13:05:34
特定のディレクトリを$sp_dirとして,
167行目あたり,
# すべてのファイルをなめ回す
#
sub search1 {
        local($dir) = $_[0];
        local(@filelist, $file, $filename);
        opendir(DIR, $dir);
        @filelist = readdir(DIR);
        closedir(DIR);
        foreach $file (@filelist) {
                if ($file eq ".") { next; }
                if ($file eq "..") { next; }
                $filename = "$dir/$file";
                if (-d $filename) {
                    if ($filename eq $sp_dir) {next;}    #←この行を追加
                        &search1($filename);
                } else {
                        &search2($filename, $dir);
                }
        }
}
でできるかも。(確認してません)

Moonlight 2000/02/08(火) 13:39:06
お答えありがとうございます^^
スクリプトにその1行を追加して、最初の部分にある
# 変更・確認必要パラメータ

$sp_dir = '../../OrangeDesign/jbl99/'; #このディレクトリーを検索しない
といれましたが、CGIが動作しませんでした。
変更・設定パラメータの部分はこれであっていますか?

ラウォッチ 2000/02/08(火) 13:51:59
よこから、すみません。

>$sp_dir = '../../OrangeDesign/jbl99/';

そもそも、このディレクトリは検索対象外では?
$target_dirで指定したディレクトリ配下が対象では!?
ぱって見ただけですが...。

wosamu 2000/02/08(火) 14:23:38
CGIが動作しないというのはどういうことでしょうか?
エラーメッセージ等ありましたら、提示してください。
仮にinternal server errorだとしたら、
>そもそも、このディレクトリは検索対象外では?
だとしたら、このような質問はされないのでは?
もし、ここに間違った値が入ったとしても
”動作しない”ということはなさそうな気がしますが。

Moonlight 2000/02/08(火) 14:43:56
お答えありがとうございます^^

新しく1行追加する前は、 ../../OrangeDesign/jbl99
のディレクトリー内も検索されていたので 検索対象には入っていると
思います。
今出るエラーは、
Internal Server Error
です。

びぎな++ 2000/02/08(火) 14:47:24
確認もせずに適当なこと言ってすいません。
事情によりいまCGIのテストができない環境にいます。(ローカルでも)
ほんとにごめんなさい! 以後,こんな状況で回答なんかしないようにします。

ですので,どなたかぼくの発言は無視して,回答を考えてもらえませんか?
ほんとに申し訳ないです。> Moonlightさん

wosamu 2000/02/08(火) 14:54:08
>今出るエラーは、
>Internal Server Error
>です。
でしたら、スクリプトを追加する段階で何か記述ミスがあるのでしょう。
perl -wcとかしてエラーメッセージを確認して修正してください。
私はコピー&ペーストで記述されたのなら、
全角スペースとか入っているのが怪しいと思います。

Moonlight 2000/02/08(火) 15:09:19
いいえ、ぜんぜんOKです。気にしないでください。
もしできればラッキーだなぁ と思って試してみているだけですから^^; >びぎな++さん

コピペで記述しました。全角スペースも一応確認してみましたが
だいじょうぶなようです。
perl -wcについてはまったくわかりません;;

簡単にはできないみたいですね^^;

無責任官庁 2000/02/08(火) 15:14:27
え〜と、この @filelist の中身ってのは、要するに ls(DOSならdir)
コマンドでの表示内容を持ってきてるのと同じようなもんなんで、
パスは1段階のみしか書けません。

なので、../../OrangeDesign/jbl99/ を検索したくない場合は、
単純に、
if ($file eq "..") { next; }
の下に、
if ($file eq "jbl99") {next;}
を追加するといったような書きかたしかないと思います。
(このディレクトリの下全部対象外にする…って感じ)

すみません。びぎな++さんのサンプルは無かった事にして書いてます。

Moonlight 2000/02/08(火) 15:23:07
[[解決]]
無責任官庁さんの方法で成功しました! 
みなさん どうもありがとうございました^^

ラウォッチ 2000/02/08(火) 15:47:59
よこから、すみません。

>$sp_dir = '../../OrangeDesign/jbl99/';

そもそも、このディレクトリは検索対象外では?
$target_dirで指定したディレクトリ配下が対象では!?
ぱって見ただけですが...。

ラウォッチ 2000/02/08(火) 15:56:51
オペミスで前回のを送信してしまいました!

びぎな++ さんのでも、$sp_dirに絶対パスを入れればOKでした!
ただし、$target_dirで指定したディレクトリ配下です。

Moonlight 2000/02/08(火) 16:08:05
びぎな++さんの方法で $sp_dirに絶対パスで試してみました。
これも成功しました^^
2つ大人になりました♪

[上に] [前に] [次に]