wwwsrch.cgi の設置で、CGI先とH.P先のサーバーが違うためlinkがうまくいかない
[上に]
[前に]
[次に]
oojiro
[E-Mail]
[HomePage]
1999/11/08(月) 22:07:17
wwwsrch.cgi を設置させていただきました。m(_ _)m
CGIのサーバーは cgi.jomon.ne.jp で、
H.Pのサーバーは www.jomon.ne.jp です。
検索のcgiを組み入れたく、とりあえずcgi先のフォルダにHTML ファイルのみ置いて、検索プログラムからアクセスできるようにしました。
でも検索プログラムは、自サイトの HTML を検索し、その URL を返すようになっているので、返ってくるリンク先が
http://cgi.jomon.ne.jp/~hmaruuo1/*****.htmlとなり本当のURLの
http://www.jomon.ne.jp/~hmaruuo1/*****.htmlになってくれません
うまく表示を変える手法は無いものでしょうか?
$target_dir = ../../public_html'; # 検索対象ディレクトリ
下方の 243行目
# 表示する
$target =~ s/$target_dir/..\/..\/~hmaruuo1/;
print "<P>\n";
print "<DT><A HREF=\"$target\" TARGET=out>";
$title =~ s/<[^>]*(>|$)//g;
$title =~ s/[\r\n]+//g;
&jcode'convert(*title, $kcode_cgi);
if ($title eq "") {
$title = $target;
}
print "$title</A>\n";
print "( <A HREF=\"$target\" TARGET=out>";
$target =~ s/..\/..\/~hmaruuo1\/?//;
print "$target</A> )\n";
print "<DD>";
と一部手直しはしてあります。
oojiro
[E-Mail]
1999/11/08(月) 22:17:34
補足です。
http://www.jomon.ne.jp/~hmaruuo1/wwwsrch.html
から”魚”という文字で検索すると
(誤)http://cgi.jomon.ne.jp/~hmaruuo1/index.html となり
(正)http://www.jomon.ne.jp/~hmaruuo1/index.html となってくれません。
ちなみに両サーバーのディレクトリは
www.jomon.ne.jp/usr/home/hmaruuo1/public_html
cgi.jomon.ne.jp/usr/home/hmaruuo1/public_html
です。
\n
1999/11/08(月) 23:54:01
http://www.tohoho-web.com/wwwsrch.htm
の(12)でもダメですか?
#試しに設置してみたけど、ループが止まらないのはなぜ?
oojiro
1999/11/09(火) 00:04:10
(12) 検索結果のジャンプ先のURLのパス名が期待するものと異なる場合、例えば、http://xx.yy.zz/aa/bb/index.htm へのリンクになって欲しいのに http://xx.yy.zz/cc/dd/index.htm へのリンクとなってしまう場合は、wwwsrch.cgi の「# 表示する」という行の次に下記の1行を追加することで回避できます。
・・・ということですけれど、これってサーバー名までも変更できるんですか?上記でいうxx.yy.zzの部分も変更できるのかな?教えて下さい。
ニワイヂリ
1999/11/11(木) 17:39:44
>検索結果のジャンプ先のURLのパス名が期待するものと
>異なる場合・・・(中略)・・・「# 表示する」という行の次に
>下記の1行を追加するこ>とで回避できます。
>これってサーバー名までも変更できるんですか?
>上記でいうxx.yy.zzの部分も変更できるのかな?教えて下さい。
試してみればいいじゃん。ね?
Nobu3
1999/11/11(木) 20:26:18
検索結果は相対パスなので、サーバ名は入ってませんね。
http://から始まる文字列に変換すればできるでしょう。
print "( <A HREF=\"$target\" TARGET=out>";
>$target =~ s/..\/..\/~hmaruuo1\/?//;
print "$target</A> )\n";
この「$target」を
$target =~ s/..\/..\/~hmaruuo1\/?/http:\/\/www.jomon.ne.jp\/~hmaruuo1\//;
こんなふうに。
Nobu3
1999/11/11(木) 20:28:26
あれ?場所が違うかも・・・。
$target =~ s/..\/..\/~hmaruuo1\/?/http:\/\/www.jomon.ne.jp\/~hmaruuo1\//;
print "( <A HREF=\"$target\" TARGET=out>";
print "$target</A> )\n";
こうかな?
oojiro
1999/11/12(金) 08:50:09
[[解決]]
ありがとうございました。
上のほうも
# 表示する
$target =~ s/$target_dir/..\/..\/~hmaruuo1/;
$target=~s/..\/..\/~hmaruuo1/?/http:\//www.jomon.ne.jp\/~hmaruuo1\//;
と変えてやったところ無事に完成しました。
皆さんのご協力に感謝いたします。
Nobu3
1999/11/12(金) 11:07:10
># 表示する
>$target =~ s/$target_dir/..\/..\/~hmaruuo1/;
>$target=~s/..\/..\/~hmaruuo1/?/http:\//www.jomon.ne.jp\/~hmaruuo1\//;
これで動くのなら、最初から
# 表示する
$target =~ s/$target_dir/http:\//www.jomon.ne.jp\/~hmaruuo1\//;
とした方がスマートですね。
Nobu3
1999/11/12(金) 11:11:12
エスケープが抜けてますね (^^;;
$target =~ s/$target_dir/http:\/\/www.jomon.ne.jp\/~hmaruuo1\//;
ですね。
ふじ
1999/11/12(金) 12:53:22
>$target =~ s/$target_dir/http:\/\/www.jomon.ne.jp\/~hmaruuo1\//;
$target =~ s|$target_dir|http://www.jomon.ne.jp/~hmaruuo1/|;
こういう場合は、このほうが見やすいかと。
/ でなくても区切りに使えますから。
oojiro
1999/11/13(土) 15:57:41
ありがとうございました。
最後の / は不要のようでした。
$target =~ s|$target_dir|http://www.jomon.ne.jp/~hmaruuo1|;
でOKです。
完成したhpをご覧になってください。http://www.jomon.ne.jp/~hmaruuo1/
ふじ
1999/11/13(土) 16:16:25
>最後の / は不要のようでした。
必要です。ディレクトリ名ですから。
省略すると、
1.(クライアントがサーバに)
「http://www.jomon.ne.jp/~hmaruuo1 を送ってくれ。」
2.(サーバがクライアントに)
「 ~hmaruuo1 というファイルはない。~hmaruuo1 というディレクトリはあるから
http://www.jomon.ne.jp/~hmaruuo1/ をリクエストしなさい。」
3.(クライアントがサーバに)
「それじゃあ http://www.jomon.ne.jp/~hmaruuo1/ を送ってくれ。」
4. (サーバがクライアントに)
ページを送信。
というやりとりが発生します。で、この 1. 2. の部分は無駄な
(最後の / があれば発生しない)通信ですので、
ディレクトリを表す / は省略しないようにしましょう。
ふじ
1999/11/13(土) 16:21:24
あー、勘違いしました。
既にある URL を置換するんだから、最後の / はあってもなくても一緒ですね(^^;;
単独で http://www.jomon.ne.jp/~hmaruuo1 をリクエストする場合と
勘違いしました。
大変失礼致しました (m_ _m)
oojro
1999/11/13(土) 16:25:37
どもども ありがとう!
[上に]
[前に]
[次に]