ラウンジ(兼FAQ掲示板)

Site serchの相対パス
過去ログ NO.1119192061
□ T・T [2005年06月10日05時06分]
「Site serch」を使わせていただいたのですが、
検索範囲であるURLが

http://www.xxx.co.jp/ooo/
で、CGIの設置できるサーバーが

http://cgi.xxx.co.jp/
と、別なので、検索範囲まで相対パスができません。
絶対パスで指定する事はできないのでしょうか?
どなたかご教授下さい。
□ NXer [2005年06月10日20時00分]

はじめまして。NXerです。

>別なので
テストをされましたか。
--------------------------------
26 # 設置したら最初に
27 # http://xxx.yyy.zzz/site_search.cgi?mode=test
28 # という呼び出し方でテストを行って下さい。
--------------------------------------------
結果はいかがでいしたか。
たぶん、
--------------------
38 設定部で設定
----------------------
を試された思います。

>指定する事
--------------------------------------------------
99 # テストモードでこのファイルの設置場所が正常に表示されない
場合コメントアウトして直接指定
100 #$url = "http://xxx.yyy.zzz/site_search.cgi";
---------------------------------------------------

下↓は当方のローカルサーバーの指定例です。# を削除して
スクリプト化しています。
$url = "http://127.0.0.1/~user/site_search.cgi";

この指定方法は、http://で始まるurl(ユーアールエル)によるもの。
これで動作しない時、そのときに限り、絶対パスで試してください。
絶対パスの形式をご存知でないときは、プロバイダーに問い合わせ
てください。

当方もcgiサーバーが別です。
>http://cgi.xxx.co.jp/
こうすると、相対パスのために、cgiサーバー内で目的のHTMLファイル
にアクセスしようとします。実際は、http://で始まるurlで一度
cgiサーバーから抜け出し、HTMLサーバーのパスに繋がるように
指定する必要があります。
cgiのスクリプトによっては、http://を認識しない場合もあり、
工夫がいる場合があります。この場合は多分すえぽんさんの
100行目変更でよいと思うのですが、動作テストはしていません。
「教授」どころか、実験台にしてすみません。

□ T・T [2005年06月10日23時47分]
NXerさん、ご返答ありがとうございます


> テストをされましたか。
はい。

--------------------------------------------------
> 99 # テストモードでこのファイルの設置場所が正常に表示されない
> 場合コメントアウトして直接指定
--------------------------------------------------
で、
$url = "http://www.xxx.or.jp/user/site_search.cgi";
というようにスクリプト化して、テストモードで見てみると、
「検索範囲」は望み通りに出るのですが、
「このファイルのURL」は実際のURLのまま
http://cgi.xxx.or.jp/~user/site_search.cgi
が表示されます。
その状態で検索を実行すると、
「検索範囲:http://www.xxx.or.jp/user/ 以下」
と検索結果画面となり、マッチするページが出てきて、
表示されるリンク先はhttp://www.xxx.or.jp/user/から始まるのですが、
実際にはhttp://cgi.xxx.or.jp/~user/内で検索してしまっています。

--------------------------------------------------
# テストモードで検索範囲が意図するものと異なる場合や、
# 検索開始ディレクトリを任意に指定する場合、コメントアウトして直接指定
# (このファイルからの相対パスで記述)
# 記述例:$st_dir = "../../html/";(この場合「2つ上のhtmlというディレクトリ」という意味)
--------------------------------------------------
で、
$st_dir = "../../http://www.xxx.or.jp/user/";

$url = "http://www.xxx.or.jp/user/";
のような事も、見よう見真似で試してみましたが、
やはりうまくできませんでした。


> $url = "http://127.0.0.1/~user/site_search.cgi";
> この指定方法は、http://で始まるurl(ユーアールエル)によるもの。
> これで動作しない時、そのときに限り、絶対パスで試してください。
> 絶対パスの形式をご存知でないときは、プロバイダーに問い合わせ
> てください。

> >http://cgi.xxx.co.jp/
> こうすると、相対パスのために、cgiサーバー内で目的のHTMLファイル
> にアクセスしようとします。実際は、http://で始まるurlで一度
> cgiサーバーから抜け出し、HTMLサーバーのパスに繋がるように
> 指定する必要があります。
> cgiのスクリプトによっては、http://を認識しない場合もあり、
> 工夫がいる場合があります。

申し訳ありません、この記述が理解できなかったのですが、
絶対パス=http://で始まるurl
だと思っていたのですが、違うのでしょうか。

ちなみに、Plalaの自作CGI用ユーザCGIサーバを利用しています。
http://www.plala.or.jp/access/community/phps/ucgi_main.html
やはりムリなのでしょうか…。
□ NXer [2005年06月11日19時34分]

>見よう見真似で

当方も試してみました。うまくいった例を書きます。NXerです。
-------------------------------URLは一部変更 
98 $st_dir = "cgi/";
102 $url = "http://www.biglove.ne.jp/~nxer/site_search.cgi";
-------------------------------

テストURL
http://cgi.www.biglove.ne.jp/~nxer/site_search.cgi?mode=test

-----------------------------テスト結果
Site_Search Test mode
このファイルのURL:http://cgi.www.biglove.ne.jp/~nxer/site_search.cgi
検索範囲:http://www.biglove.ne.jp/~nxer/以下

site_searchを実行して、検索語denkohを入力。その結果の表示です。
------------------------------------------------------
検索範囲:http://www.biglove.ne.jp/~nxer/cgi/ 以下
検索対象:全4ディレクトリ 57ファイル中 16ファイル(html htm txt)
表示件数:10件/ページ
検索キー:denkoh
全ての検索キーにマッチするページ数: 3ページ(内1→3を表示)
-----------------------------------------------------------
以上です。

******************************プロバイダーが異なるために
どのような設定がよいのか、よく分りません。そのために
少し詳しく書きます。実行してソースを見るなどすれば、パスの変化が
分ります。

参考までに当方のディレクトリ構成

/public_html/
....|-index.html
....|-site_search.cgi
....|-/cgi/
........|-htmlファイル,cgiファイル

site_search.cgiファイルからみた相対パスの指定があることから
初めは
98 $st_dir = "./";
としたところ、
検索範囲:http://www.biglove.ne.jp/~nxer/./ 以下
となりました。そこで上のディレクトリから、
98 $st_dir = "/cgi/";
としたところ、サーバーがパス(path)のエラーメッセージを返して
きました。ためしに、前のスラッシュ(/)を削除したら、検索モードに
入ることができました。
------------------------------
98 $st_dir = "cgi/";
------------------------------

スクリプトを精査できていませんから、
http://www.biglove.ne.jp/~nxer/
の当方のサイト最上位のディレクトリ以下、つまりサイト全体
では、指定ができていません。相対パスの指定で他の指定方法があるのかも
しれません。全体を/~nxer/all/,,,として
98 $st_dir = "all/";
とすれば全体を検索するのでしょうか。
そちらのサイトに合わせて、お試しいただきよい結果があれば、お知らせく
ださい。

*******************用語 
>絶対パス=http://で始まるurlだと思っていたのですが、違うのでしょうか。

それでいいと思います。biglobeの説明もそうです。

ただパス(path)は、urlである、とは必ずしもいえないと思います。
なぜなら、urlはパスである、は真でないからです。

当方の場合、home directoryは、/home0/000/userであるとプロバイダーから
連絡があったことから、パスという用語を慎重に使っています。wwwで始まる
URLと区別するため、あいまいな、「絶対パス」を使って戸惑わせてしまいました。

http://www.plala.or.jp/access/community/phps/ucgi_main.html
には、こういう記述がありました。
---------------------------------------------
  旧サーバ   新サーバ
サーバ名 cgi01.plala.or.jp → cgixx.plala.or.jp(※)
ホームディレクトリ /h0/【お客様のディレクトリ名】 → /home/【お客様のディレクトリ名】
------------------------------------
たぶん、このようなディレクトリ構成で任意のファイルを指定する方法のつもりで
した。おそらくこのパス形式を使われたことはないと思いますが、それなりに用途
はあると思います。
ルートとなる位置から、ファイルに到るまでのパスを記述することを絶対パスとい
います。ただし、一つのサーバー内に限られます。混乱を招いて失礼しました。
□ T・T [2005年06月14日01時16分]
NXerさん、ありがとうございます。

--------------------------------------------------
# テストモードでこのファイルの設置場所が正常に表示されない場合コメントアウトして直接指定
---------------------------------------------------
でいくら設定してもダメな様ですね。あくまで、

--------------------------------------------------
# テストモードで検索範囲が意図するものと異なる場合や、
# 検索開始ディレクトリを任意に指定する場合、コメントアウトして直接指定
# (このファイルからの相対パスで記述)
---------------------------------------------------
で指示したディレクトリを検索するんですね。

その後も色々と試してみましたが、完全にサーバが別なようで、
やはりうまくいきませんでした…。
そこでプロバイダのユーザーの方に相談をしてみたのですが、
「Site_Search v.1.0」はソケット通信が必要なのでしょうか?
ソケット通信を要するcgiは、サーバー負荷の関係で許可されていないそうなのです。
(正確な状況を把握していないので、文章がおかしいかも知れませんがご容赦下さい。)
完全に出来ないと分かるまでチャレンジしてみたいので、よろしくお願いします。

PS
用語については勉強になりました。
確かにローカルでも「絶対パス=url」でなくなりますね(^^)。
□ NXer [2005年06月17日20時18分]

plalaのサイト内検索cgi設置の質問が、とほほさんの過去ログにありました。
2000/06/11(日) のもの。奇しくも、当方の書き込みの丁度5年前に当たります。
古いQ&Aで失礼ですが、そのURLを追記します。NXerです。

http://www.tohoho-web.com/lng/r200006/00060124.htm

回答に含まれる詳細解説ページは、アクセスできませんでした。残念です。
Niftyも別サーバーです。回答者は、ルートディレクトリからのファイル
指定方法つまり、「絶対パス」を使っているようです。私も同じ考えを
最初に書き込みました。

しかし、次に様な点で、スクリプト変更は当方の能力を越えていますから、
この件はこれにて終結させていただきます。

1 niftyは、cgiファイルを/cgi-bin/ディレクトリ内に転送します。
2 plalaは、cgiファイルを、cgixxという名前のサーバーに転送します。
3 biglobeは、cgiファイルをwwwnxという名前のサーバーの自由な位置に転送し  ます。しかし、起動は、cgi.wwwnx.....cgiという形式になります。
plalaでは、2.1 ウェブ用サーバー と 2.2 cgi用サーバー
があり、その関係は
2.11 cgiを許可しないウェブ用サーバー(例、ジェオシティーズ)と
2.21 cgiを許可するプロバイダーのサーバー(例、biglobe)
の関係に近いのでしょうか。(このようにcgiを設置する例があります。)
もし、そうなら、当方のbiglobeのcgiで、他のすべてのウェブ用サーバーの
ファイルを検索できることになります。つまり、「サイトを越えた」サーチ
エンジンです。完全に独立した別サーバーなら、「サイトを越える」ため、
おそらく設置出来ない、ということでしょうか。
間違っているかも知れませんが、以上です。

(以下は、出来ても、出来なくても一般的な愚案です。)
*********************************cgi重視のサイト作りの場合
基本的にcgiは、負荷が大きくなったり、不定量のために、設置を
許可するプロバイダーは限定されています。さらに、許可しても
サーバーダウンなどの障害を回避するために、制約が設けられて
います。
この際、cgi設置の自由度が高いプロバイダーやレンタルサーバーに
移行することも選択肢の一つです。貴サイトの目的が不明のうえ
サイトそのものも未見ですから、一般的な提案です。

*********************************検索重視のサイトの場合
googleは、当方の新規ページを最速24時間後にサーチエンジンの検索イン
デックス(があるとして、それ)に追加更新できるロボットと、最適な順
位付け(拙ページを上位にランキングしてくれること)のロジックを持って
いるようです。
例えば、この回答は、「plala」「site_search.cgi」「T・T」の複合
検索で、投稿後何日でヒットするでしょうか。お試しいただき、ヒッ
トしない時は、googleと当方を信用しないでください。(笑)
ヒットしたら、google検索を積極的に利用されてはどうでしょうか。
□ T・T [2005年06月19日23時40分]
NXerさん、どうもありがとうございました。

本来なら自分で調べなくてはいけないような事も
色々と探してきていただいたようで感謝しています。
やはり、Plalaでは、cgiが設置出来るのはまったく別のサーバーで、
「サイトを越えた」全文検索は出来ないようですね。

google検索は追加更新するまでの間や、
クロールされなくなると反映されないと言う事だと思い、
完全な全文検索にはならない事に不満があったもので・・・。

今まで不都合は感じなかったのですが、
現在のプロバイダのサーバだとcgi設置に関して制限があるのでは、
将来的にはサイトの移行も検討してみようかと思います。
その際には、またこちらのCGIスクリプトを利用させていただきたいと思います。

どうもありがとうございました。

suepon.com | CGI作成/CGI制作 | JavaScript | ドメイン検索 | バナー自動作成 | Google ダンスツール | 松浦亜弥 | H.P.memo | パソコン | ネイル

Copyright (C) 2002 - 2009 suepon , All rights reserved. Powered by CGI Script Market.