我正在使用Apache与Passenger托管我的Sinatra应用程序。它托管在子文件夹中 - 意思是,我的主要网站是example.com
,我的应用程序位于example.com/popcorn
。
所以我有get '/'
路线,这很好用。问题是我的观点包含一个HTML表单,该表单向upload
发出了帖子请求,而post '/upload'
路由没有处理它。而不是example.com/popcorn/upload
,而是试图获得example.com/upload
。
所以我认为没问题,不是理想的解决方案,但是现在我将对表单操作URL进行硬编码。但这也不起作用 - 使行动popcorn/upload
失败。这是我有点困惑的地方,我的Google-fu很弱,我在那里找不到帮助。
也许我可以有某种Apache重写规则,但这是正确的解决方案吗?我错过了什么吗?我真的很感激这里的提示,因为我觉得我搞砸了一些非常简单的东西,这真的让我烦恼。
答案 0 :(得分:1)
你可能想要url
helper method。这会考虑应用程序在服务器上的安装位置:
url('/upload')
以上代码将评估为:
http://example.com/popcord/upload
在您的应用内部,您不需要更改任何内容,这将被路由到现有的post '/upload'
处理程序。