我的应用程序位于子URI http://myhost/app2
中。我很难搞清楚如何为此配置正确的区域设置路由。
我已经把它放在routes.rb中我试过了两个:
Rails.application.routes.draw do
get '' => redirect("/#{I18n.default_locale}")
scope "/:locale", locale: /#{I18n.available_locales.join("|")}/ do
root 'index#home'
end
end
以及:
Rails.application.routes.draw do
prefix = Rails.application.config.relative_url_root
get "#{prefix}" => redirect("#{prefix}/#{I18n.default_locale}")
scope "#{prefix}/:locale", locale: /#{I18n.available_locales.join("|")}/ do
root 'index#home'
end
end
在我的production.rb文件中,我有:config.relative_url_root = "/app2"
我的nginx.conf文件(取自Phusion Passenger docs):
http {
...
server {
...
location ~ ^/app2(/.*|$) {
alias /home/dani/app2/public$1;
passenger_base_uri /app2;
passenger_app_root /home/dani/app2/;
passenger_document_root /home/dani/app2/public/;
passenger_enabled on;
}
}
}
当我尝试在生产中访问http://myhost/app2
时,我会收到一个Rails错误页面,上面写着"您正在寻找的页面不存在。"
我的production.log文件对于我提出的每个请求都是这样的:
I, [2014-09-01T12:22:56.050499 #15230] INFO -- : Started GET "/app2" for myipaddress at 2014-09-01 12:22:56 -0400
我查看了nginx access.log文件,我看到以下内容:
[01/Sep/2014:12:26:04 -0400] "GET /app2 HTTP/1.1" 301 91 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0"
[01/Sep/2014:12:26:04 -0400] "GET /en HTTP/1.1" 404 1351 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Firefox/31.0"
因此,从/app2
到/en
的重定向正在发生,但myhost/en
无法解析此设置上的任何内容,它应为myhost/app2/en
。
任何建议都会有所帮助。
注意:开发过程中一切正常。