[英]404 Not Found error in deploying rails 3.2.12 app (with engines) to SUB URI on nginx/passenger
[英]How to use sub uri to login in rails 3.2.12 with passenger/nginx
我们的Rails 3.2.12应用程序托管在子目录/nbhy
。 routes.rb
是(仅相关):
root :to => "authentify::sessions#new"
match '/signin', :to => 'authentify::sessions#new'
match '/signout', :to => 'authentify::sessions#destroy'
这里authentify
是处理用户身份验证的rails引擎。 这是引擎authentify
的routes.rb
:
resource :session
root :to => 'sessions#new'
match '/signin', :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'
要登录,我们必须使用以下链接:
http://mysite.com/nbhy/authentify/session/new
但是这个链接太长而且不容易记住。 如果我们登录:
http://mysite.com/nbhy
系统将抛出错误404 Not Found并将页面重定向到:
http://mysite.com/authentify/session
问题是应用程序正在将登录请求重定向到无法找到的/authentify/session
(缺少nbhy)。 为什么缺少nbhy,我们如何将其放回url中,以便用户可以从http://mysite.com/nbhy
登录?
这是sub uri
ubuntu 12.04 server
上的nginx config
:
server {
listen 80;
server_name mysite.com;
root /var/www/;
passenger_enabled on;
rails_env production;
passenger_base_uri /nbhy;
}
尝试:
namespace :nbhy do
match '/signin', :to => 'authentify::sessions#new', :as => "signin"
match '/signout', :to => 'authentify::sessions#destroy', :as => "signout"
root :to => "signin"
end
并从乘客身上移除基地uri。
您可以更改服务器根目录:
server {
listen 80;
server_name mysite.com;
root /var/www/nbhy;
passenger_enabled on;
rails_env production;
}
这是非常可以接受的,这就是我在所有网站上所做的事情。 bacuse它连接域和根路径之间。
比你所有的腐烂都正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.