Nginx + Unicorn では問題ないのに、Pow を使っている開発環境だけ特定の URL で 404 Not Found を返すことがあり困っていました。
原因
Pow は public という名前のディレクトリを静的なパスだと解釈するようで、そこにファイルが存在する場合そちらを優先して表示するようです。
現象
例えば、 /admin/comments
という URL があるとします。もしアプリケーションの /public
ディレクトリに admin/comments/
という名前のディレクトリが存在したら、アプリケーションがリクエストを処理するよりも先に Pow がこの URL は静的ファイルへのアクセスだと解釈し、 /public/admin/comments/index.html
というパスのファイルを表示しようとするものの、このディレクトリには index.html
という名前のファイルが存在しないため 404 Not Found を返します。
Sinatra ベースの CMS Lokka を使用していてこのような現象に遭遇しました。
対策
対策としては、テンプレートのパスと URL がダブらないようなディレクトリ構成にするしかないと思います。