LighttpdとFastCGIで、静的・動的ファイルを俺的に振り分ける
あまり「static/以下は静的」みたいな振り分け方は好きではなくて、「拡張子が有ったら静的・無かったら動的」として振り分けるようにしています。
Lighttpd + FastCGIだとこんな感じで「拡張子を含まないリクエストをfastcgiで処理する」という条件でできました。
$HTTP["url"] =~ "/[^/\.]*(\?|$)" { # "/[^/\.]*(\?.*)?$"でもOK fastcgi.server = ( "" => (( "socket" => "/var/run/lighttpd_fastcgi.socket", "check-local" => "disable", )) ) }
Apache + ModPerlだと、これとは逆に「全てをmodperlで処理し、拡張子があるものだけはdefault-handlerで処理する」と書かないといけません→Catalyst::Request#pathの値に、LocationMatchでマッチした文字列がくっつく - ヒルズで働く@robarioの技ログ
「"" =>」の部分(ドキュメントには「
fastcgi.debug = 1 debug.log-request-handling = "enable"
でデバッグしながら調べたところ、「""=>」とするとCatalystに「/foo/bar/baz」が渡るようになりました。