1 つのことを除いて、正常に動作する Rails アプリがあります。
存在しないもの (つまり、/not_a_controller_or_file.txt) を要求すると、Rails は「ルートが一致しません...」という例外をスローします。応答は次のようになります (空白行は意図的なものです)。
HTTP/1.1 200 OK
Date: Thu, 02 Oct 2008 10:28:02 GMT
Content-Type: text/html
Content-Length: 122
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Status: 500 Internal Server Error
Content-Type: text/html
<html><body><h1>500 Internal Server Error</h1></body></html>
/vendor に ExceptionLogger プラグインがありますが、それは問題ではないようです。カスタム 500.html 以外にエラー処理を追加していません (ただし、応答にはその HTML は含まれていません)。この HTML の一部がどこから来ているのかわかりません。
つまり、どこかでそのHTTP/1.1 200ステータス コードを追加するのが早すぎるか、Status: 500を追加するのが遅すぎます。Webrick を使用すると、適切な HTTP/1.1 500 ヘッダー (上部) を取得するため、Apache であると思われます。
私のプロダクション スタックは次のとおりです。 Apache 2 Mongrel (5 インスタンス) RubyOnRails 2.1.1 (1.2 と 2.1.1 の両方で発生)
言い忘れましたが、エラーは「ルートが一致しません...」という例外が原因です