坂本さんが w3m 0.2.1 + inu-1.4a3 用に、不明な URI の場合に local-CGI を呼び出す為の patch を作られましたので、この機能を利用して URN をリダイレクトする為のスクリプトを書くことにしました。
この URN → URL 変換リダイレクタは、http://www.alib.jp/cgi-bin/urn.cgi に置きますので、坂本さんの作られた patch を当てた w3m を使われる方は、起動時に w3m -o uri_cmd=http://www.alib.jp/cgi-bin/urn.cgi <file> とすることで、自動的にこの URN リダイレクタを利用できます。なお、手元に無いと不便だ、という方は urn.pl として置いておきますので、よろしかったらご利用下さい。
機能
単に、URN を QUERY_STRING で受け取り、対応した URN の場合は該当のリソースへ Location で飛ばします。非対応の URN の場合はエラーを出力します。
特に w3m に特化していませんので、掲示板などで URN が埋め込まれた場合に、http://www.alib.jp/cgi-bin/urn.cgi?urn:ietf:rfc:1855
というハイパーリンクを埋め込んで利用することもできます。
対応した URN
Perl 的正規表現で書いてあります。
- urn:ietf:rfc:\d+
- urn:ietf:id:[A-Za-z\d\-]+ (同じディレクトリに urn-ietf-drafts.dat が必要)
- urn:ietf:std:\d+ (同じディレクトリに urn-ietf-std.dat が必要)
- urn:ietf:fyi:\d+ (同じディレクトリに urn-ietf-fyi.dat が必要)
- urn:issn:\d{4}-\d{3}[\dX]
- urn:isbn:\d-\d+-\d+-\d