Open Source WEB

2006-09-11 [Kahua] URLを短くしたとき、古いcgiへのアクセスをリダイレクトする

さて、KahuaのURLが短くなったのは良いが、古いURLである/cgi-bin/kahua.cgiへのアクセスをどう処理したら良いだろうか?

mod_rewriteやlighttpdにルールを追加するのが本来の処理方法だろうが、このルールは複雑になるはずである。

対策を考えるために、まず古いURL/cgi-bin/kahua.cgiにアクセスしてみよう。

Kahua error - stale session key

The given session key is wrong, or expired.

Kahuaサーバーに渡されたパス"/cgi-bin/kahua.cgi"はセッションキーであると解釈され、該当するキーがないのでエラーになっている。

これを解消するには"cgi-bin"という名前のエントリーを書いてやれば良い。

(define-entry (cgi-bin cgi-name worker :rest path)
 (define (redirect return-cont)
   (let ((path (or return-cont "")))
     (node-set:
      (html: ;; Needed to make a single SXML node (for now)
       (extra-header: (@: (name "Status") (value "302 Moved")))
       (extra-header: (@: (name "Location")
                          (value (kahua-self-uri-full path))))))))
  (redirect (string-join path "/")))

引数cgi-nameに"kahua-cgi"が渡され、引数workerには常に"kahua-web"が渡される。 これらの引数は単に捨てられる。

使用される引数は残りのpathである。

例えば、

http://www.example.com/cgi-bin/kahua.cgi/kahua-web/show/pagename

は、

http://www.example.com/show/pagename

にリダイレクトされる。めでたしめでたし。

--yasuyuki


Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us