http://www.tokuda.net/diary/をhttp://www.tokuda.net/diary/adiary.cgiにする
URIがスラッシュで終わっているときにデフォルトでadiary.cgiを読ませてやりたいと思っていて、いままでうまく動かせていなかった。
Apacheの.htaccessに仕掛けをするんだろうなー、と思っていて、これまではDirectoryIndexを使っていました。
つまり、ブラウザのURIを表示するところにhttp://www.tokuda.net/diary/と表示するのではなくて、http://www.tokuda.net/diary/adiary.cgiと表示されなければならないということです。
Redirectすればいいじゃん、と思い
うーん、ちゃんとスラッシュが末端であることを認識してくれればいいのになぁと思いながら、もしかしたら正規表現で行末であるところの$を使えばうまくいくかもなーと思い立ち、
結果は、ばっちり上手くいきました。
上手くいったものの、一回redirectが入るので少々無駄のある解決策ですよね。Webブラウザが要求したURIしか表示されないとしたら、やっぱり一回はWebブラウザに戻して、再度リクエストを投げてもらうしかないんでしょうかねぇ。
と、思ってadiaryのページを見たらrewriteを使う方法が推奨されているじゃないですか。しかも、同梱されているドキュメントにサンプルまで載っているじゃないですか。
でも動くよ。こりゃぁいい。
Apacheの.htaccessに仕掛けをするんだろうなー、と思っていて、これまではDirectoryIndexを使っていました。
DirectoryIndex adiary.cgiこれでスラッシュで終わってもちゃんとadiary.cgiを実行してくれます。でも、これだと次のページのリンクなどがうまく動いてくれません。
つまり、ブラウザのURIを表示するところにhttp://www.tokuda.net/diary/と表示するのではなくて、http://www.tokuda.net/diary/adiary.cgiと表示されなければならないということです。
Redirectすればいいじゃん、と思い
Redirect permanent / http://www.tokuda.net/diary/adiary.cgiとやってみました。すると、URIがループしてしまうらしく、ブラウザにはとんでもなく長いURIが表示されてしまいました。
うーん、ちゃんとスラッシュが末端であることを認識してくれればいいのになぁと思いながら、もしかしたら正規表現で行末であるところの$を使えばうまくいくかもなーと思い立ち、
RedirectMatch permanent /$ http://www.tokuda.net/diary/adiary.cgiと記述してみました。
結果は、ばっちり上手くいきました。
上手くいったものの、一回redirectが入るので少々無駄のある解決策ですよね。Webブラウザが要求したURIしか表示されないとしたら、やっぱり一回はWebブラウザに戻して、再度リクエストを投げてもらうしかないんでしょうかねぇ。
と、思ってadiaryのページを見たらrewriteを使う方法が推奨されているじゃないですか。しかも、同梱されているドキュメントにサンプルまで載っているじゃないですか。
RewriteEngine On RewriteBase /diary/ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ adiary.cgi/$1 [L]うーむ、呪文だ。RewriteCondの所がちょっとよくわからんな。
でも動くよ。こりゃぁいい。
コメント(0件)
- TB-URL http://www.tokuda.net/diary/adiary.cgi/025/tb/
ddでディスク検査のつづき
■サスペンドで接続が切れてた
朝起きたらMacBookがサスペンドしていて (あたりまえだけど)、嫌な予感とともに起こしてみたら案の定sshの接続が切れていました。つまり、昨日のddは失敗したというわけ。
んで、dd if=/dev/zero of=/dev/sd0c bs=1mをするだけのshell scriptを書いて、バックグラウンドジョブで流して出かけました。
■rawデバイスとblockデバイスの歴然とした違い
そんでもって、夜になっても終わらず。13時間ぐらい流したところでおかしいなぁとIRCでぼやくと、「sd0cじゃなくてrsd0cじゃないの?」というアドバイスを頂戴しました。おー、rawデバイスとblockデバイスですね。newfsのときも教えてもらったのに応用の利かないやつです。
なんかUSBメモリだとスピードが一桁ちがうとのこと。
ということでddコマンドにcount=10をつけて10Mbytesだけ書く試験をやってみました。
glantank# dd if=/dev/zero of=/dev/sd0c bs=1m count=10 10+0 records in 10+0 records out 10485760 bytes transferred in 8.168 secs (1283761 bytes/sec) glantank# dd if=/dev/zero of=/dev/rsd0c bs=1m count=10 10+0 records in 10+0 records out 10485760 bytes transferred in 1.893 secs (5539228 bytes/sec)4.3倍ほど差が出ました。これは歴然とした差ですね。5Mbyes/secなので計算すると250Gbytesの場合、やっぱり14時間弱ほどかかりそうです。
ehciのumass接続なのでUSBとしてはがんばっているはずですが遅いですねぇ。結局のところPATAで接続しないと全然駄目だろうという話になりました。やれやれ、眠っているCeleron400MHzのマシンを引っ張りだしてくるしかなさそうですねぇ。出すのも分解するのも面倒だなぁ。
■SIGINFOでddの進行状況を表示させる
ところで、ddの進行状況は普通に実行していると表示されませんが、SIGINFOのsignalを送ってやると進行状況(というかddの結果出力そのまま)を表示してくれると教えてもらいました。kill -INFO プロセスIDでも良いですが、フォアグラウンドで実行している場合にはCtrl-Tで簡単に出力が得られます。こりゃ便利。
- TB-URL http://www.tokuda.net/diary/adiary.cgi/024/tb/
今日のボク
朝はやっぱり起きないねー。
シマウマの歌を歌っていたよ。シマウマは馬よりもロバに近いって今日どっかのWebページで読んだなぁ。
信号の間に合うように走っているとなんか楽しそうな顔をしていて、なんかこっちも楽しくなってしまうね。いいね。
先週書いた年賀状を渡したんだろうかね。
あしたは遠足らしい。ちゃんと起きられるかな。
シマウマの歌を歌っていたよ。シマウマは馬よりもロバに近いって今日どっかのWebページで読んだなぁ。
信号の間に合うように走っているとなんか楽しそうな顔をしていて、なんかこっちも楽しくなってしまうね。いいね。
先週書いた年賀状を渡したんだろうかね。
あしたは遠足らしい。ちゃんと起きられるかな。
- TB-URL http://www.tokuda.net/diary/adiary.cgi/023/tb/