at posts/single.html

WikiFarm を動かす (2)

前回から一月ほど時間が経ってしまった…。 今日は、WikiFarm *1 の URL の仕組みについて調べてみた。

BitChannel の WikiFarm が

http://www.example.com/bc/farm.cgi

に設置されているとすると、 それぞれの Wiki は

http://www.example.com/bc/farm.cgi/[ノード名]/[ページ名]

でアクセスできる。 ([ノード名]とは、それぞれの Wiki に付けられた名前)

さらに、Apache のコンテントネゴシエーション機能を使うと、

http://www.example.com/bc/farm

http://www.example.com/bc/farm.cgi

に転送してくれるので、さらにURLは短くできる。 一例をあげるとこうなる。

http://www.example.com/bc/farm.cgi/testwiki/FrontPage   # testwiki の FrontPage を表示
http://www.example.com/bc/farm.cgi/testwiki/?cmd=edit;name=FrontPage # 同上を編集
http://www.example.com/bc/farm.cgi/testwiki/SandBox     # testwiki の SandBox を表示
http://www.example.com/bc/farm.cgi/otherwiki/SandBox    # otherwiki の SandBox を表示

farm.cgi では、QUERY_STRING と PATH_INFO の二つの環境変数を使って、 どの Wiki を表示するかを制御しているみたい。 先ほどの例の一番上の場合は、 PATH_INFO には /testwiki/FrontPage が設定される。 二番目の例では、 PATH_INFO=/testwiki/ で QUERY_STRING は cmd=edit;name=FrontPage となる。

ちなみに、Apache のドキュメント(なんで本家のはみつからないんだろう?)を参照すると、URLはこのように分割されるみたい。

http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME$PATH_INFO?$QUERY_STRING

これを踏まえて、WikiFarm のURLをもう少し短くできないか考えてみる。

関連する日記