7

我们的 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 引擎。这是routes.rb引擎authentify

  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

这是: nginx config_ubuntu 12.04 serversub uri

server {
        listen 80;
        server_name mysite.com;
        root /var/www/;
        passenger_enabled on;
        rails_env production;
        passenger_base_uri /nbhy;
}
4

1 回答 1

1

尝试:

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;
}

这是非常可接受的,这就是我在所有网站中所做的。因为它连接域和根路径。

比你所有的死记硬背都正常。

于 2013-06-13T21:20:18.537 回答