Chat (Lingr.com)
Informaiton
Daily
Column
- MySQL日本語の旅(5/1)
- アクセス向上秘伝(5/9)
- 一風変ったHaskellλ門(6/13)
- SICP Answer Book (5/31) 問題3.26追加
Zope Solution
Extra
アーカイブ
OSS案内所
Site Info
関連リンク
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
There is no comment.