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をもう少し短くできないか考えてみる。