自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
April 05, 2008 [おもひで]
■ [Rails] Rails + ApacheでのREST
っていうタイトルで合ってるのかな、ま、いいや。
今さら、RailsとApacheという組み合わせもないよな、みたいなことを言われそうだけど、AppHonyakuはそういう組み合わせ。fcgiとか使わないと遅くて使い物にならん!という声も多いようだけど、AppHonyakuのように、あまりマスを目指さないサービスで細々とスタートするなら充分使えると思うんだよな(今のところの感想です)。もちろん、よく使うページはページキャッシュしたり、努力はしてるんだけどね。
で、そのページキャッシュなんだけど、Railsについている.htaccessのままだと、同じURLに対するGETはうまくいくけどPOSTがうまくいかない。
具体的には、http://apphonyaku.s332.xrea.com/x/catalogs/というURLにGETするときはcatalogs.htmlというキャッシュファイルを参照してくれるので良いのだけど、同じくPOSTしようとすると、やっぱりcatalogs.htmlを読んでしまうため、POSTされない。
で、以下のように.htaccessを書くことで、POSTの時は無条件にdispatch.cgiに振り分けられるようにできた。
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_METHOD} =POST [NC]
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
ちなみに、"=POST"の部分は間にスペースを入れるとerror.logに"RewriteCond: bad flag delimiters"と出力して動作しないので注意。
[ツッコミを入れる]
