Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

相対パスでリンクを出力する



竹迫です。

"Yuji Koyanagi" <yuji_koya@xxxxxxxxxxx> wrote:
> ある事情から、リンクを全て相対パスにしなければならなくなり、
> 一生懸命頑張っているのですが、行き詰まってしまいました。
> 
> 検索結果のリンク先については、.namazurc の「Replace」を
> 編集する事で修正できました。
> 
> ただ、ペイジ:[1][2][3] にあるリンクは変更されません。

この部分のリンクは、namazu.cgi が直接出力しているので、
ソースコードを修正して、再コンパイルする必要があります。

> 以上の事から、確認したいことは、次のとおりです。
> 
> 1. .namazurcの用に、環境変数で設定することができるのか。

現在のところ、環境変数などで設定することはできません。

> 2. 1の方法が無い場合、修正するところはoutput.cでいいのか。
>      または、下記変更内容が正しいか。

修正するファイルは、src/output.c で大丈夫です。

変更個所については、概ねいいところと突いていると思います。
ただし、この変更内容だと、深いディレクトリの下に
namazu.cgi があるときに、問題が生じてくる可能性があります。

例) /document/search/cgi-bin/namazu.cgi など

汎用性を持たせるためには、絶対パスのディレクトリ部分を削除して、
ファイル名だけを指定するようにした方がよいでしょう。

とりあえず、今回の要望に対応した Namazu 2.0.7 用のパッチを
簡単に作りましたので、こちらをお試し下さい。

-----------------------------------------------------------ここから
--- output.c.orig	Wed Sep 12 13:50:42 2001
+++ output.c		Tue Oct 23 18:35:02 2001
@@ -492,14 +492,20 @@
     qs = nmz_getenv("QUERY_STRING");
     sn = nmz_getenv("SCRIPT_NAME");
     dn = nmz_getenv("DOCUMENT_URI");
 
     if(dn == NULL || *dn == '\0') 
         dn=sn;
 
+    if (dn != NULL) {
+	char *s;
+	for (s = dn; *s; s++)
+	    if (*s == '/') dn = s + 1;
+    }
+
     html_print(_("	<strong>Page:</strong> "));
 
     max    = get_maxresult();
     whence = get_listwhence();
     for (i = 0; i < PAGE_MAX; i++) {
 	if (i * max >= n)
 	    break;
-----------------------------------------------------------ここまで

とりあえず、手元の Red Hat Linux 7.1 の環境で動作確認をしました。

> 3. make方法は  "%make 『enter』"でいいのか。

修正したプログラムに問題がなければ、単純に、
ソースを展開した namazu-2.0.7 ディレクトリにて、

% make

とすれば、コンパイルできるはずです。

ただし、namazu.cgi のコンパイルはされますが、
実際に Web サーバ上で使われている場所への
インストールは手動で行なわなければなりません。

namazu.cgi を CGI として動作させているパスが
/usr/local/apache/cgi-bin/namazu.cgi だとすると、
以下のようなコマンドを実行して、古い namazu.cgi を
上書きするのを忘れないようにして下さい。

% cp src/namazu.cgi /usr/local/apache/cgi-bin/namazu.cgi

確かに、アプリケーションレベルゲートウェイなどを介して
Web サービスを提供している場合、設定内容によっては
リンク先がすべて相対パスでないと問題が起きる事がありますね。

--
  広島市立大学 情報科学部 情報機械システム工学科 知能ロボット講座
     竹迫 良範 <takesako@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>