0

画像モデルのインスタンスである画像に関する情報を提供するパス /api/blah/blah/images.json を持つ Rails によって提供される REST API があります。開発中、これは正常に機能します。私たちが作成したサンドボックス環境では、これにより apache エラーが発生します (パスが routes.rb と一致することはなく、Rails ログにはリクエストがまったく記録されません)。

いろいろ試してみたところ、この問題は部分文字列「/images」、「/javascripts」、または「/stylesheets」を含む URL で発生することがわかりました。そのため、Rails アセット パイプラインが何らかの方法でこれらの URL をインターセプトしていると考えられます (そして、そのパスで画像を見つけてエラーを出す)。

アセットとして扱われる URL と、routes.rb に従ってコントローラーに渡される URL をどのように設定しますか?

4

1 に答える 1

0

解決しました。{environment} .includeapacheconfファイルに次の行があります。

# Turn passenger off for directories w/ just static content and
# allow auto indexing.
<Location ~ /(stylesheets|javascripts|images|snapshots|fonts)>
  PassengerEnabled off
  FileETag None
  # Options -Indexes
</Location>

これは、URLパスが正規表現と一致するたびに乗客をオフにしました(したがって、Railsがリクエストを取得するのを防ぎました)/\/(stylesheets|javascripts|images|snapshots|fonts)/。これは非常に熱心な正規表現です。この場合、パスがこれらの名前のいずれかで始まる場合にのみ実際に一致するはずなので、次のように変更しました。

# Turn passenger off for directories w/ just static content and
# allow auto indexing.
<Location ~ ^/(stylesheets|javascripts|images|snapshots|fonts)/>
  PassengerEnabled off
  FileETag None
  # Options -Indexes
</Location>

その単語が実際にパスの最初のものである場合にのみ一致するようにします。

于 2012-11-27T22:56:54.697 に答える