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 がないのはなぜですか? ユーザーが からログインできるようにするにはどうすれば nbhy を URL に戻すことができますhttp://mysite.com/nbhyか?

nginx configオンubuntu 12.04 serverは次のsub 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 に答える