2016-04-07 6 views
0

ApacheをPassengerで使用してSinatraアプリケーションをホストしています。サブフォルダ内にホストされています。つまり、私のメインサイトはexample.com、私のアプリケーションはexample.com/popcornです。Sinatraで相対URLはどのように機能しますか?

だから私はget '/'のルートを持っており、それは正常に動作します。問題は、ビューにuploadへの投稿要求を行うHTMLフォームが含まれており、post '/upload'ルートがそれを処理していないということです。 example.com/popcorn/uploadの代わりに、example.com/uploadを取得しようとしています。

私は大丈夫ですが理想的な解決策ではありませんが、今はフォームアクションURLをハードコードします。しかし、それはどちらもうまくいかず、行動はpopcorn/uploadにも失敗します。これは私がちょっと困惑し、私のGoogle-fuが弱いところで、私はそこに助けを見つけることができませんでした。

多分、私はある種のApache書き換えルールを持つことができましたが、それは正しい解決策ですか?何か不足していますか?私は非常にシンプルなものを台無しにしてしまったように感じ、実際に私を悩ませているので、ここでヒントをいただきたいと思います。

答えて

1

おそらくurl helper methodが必要です。アプリは、サーバに搭載されているところで考慮されます。

url('/upload') 

上記のコードは次のようなものと評価されます:あなたは何も変更する必要はありませんあなたのアプリ内

http://example.com/popcord/upload 

、この既存のpost '/upload'ハンドラにルーティングされます。

関連する問題