2016-04-14 38 views
0

私はアプリケーションがあります。リクエストはドメインまたはサブドメインから来ることができます。たとえば、サブドメインからすべてのルートをパスにリダイレクトする方法

admin.example.comexample.com/adminにリダイレクトされています。私はこれをnginxの設定で実現しました。しかし、問題は、あらゆる環境/ devマシンに対して、nginx.confを設定する必要があることです。レールレベルでやりたい

つまり、admin.example.comからのすべてのリクエストは、レール経由でexample.com/adminにリダイレクトする必要があります。また、devise認証が破られないようにする必要があります。

routes.rbを

Rails.application.routes.draw do 
    root 'home#index' # Domain request 

    devise_for :admins, controllers: { 
         sessions: 'admin/sessions', 
         registrations: 'admin/registrations', 
         passwords: 'admin/passwords', 
         invitations: 'admin/invitations' 
        } 
    namespace :admin do 
    devise_scope :admin do 
     root 'dashboards#show' 
     get '/contact-us' => '/home#contact_us' 

     resource :dashboard 
     resources :users, :only => [:index, :create, :update] 
     resources :admins, :customers 
     concerns :notifiable 
.. 
.. 
    end 
    end 
end 

おかげ

答えて

0

のスニペット私は「キャッチオール」-routeとの組み合わせで、制約ブロックの内側のすべてのルートをラップするために試してみた:

Rails.application.routes.draw do 
    constraints subdomain: 'www' do 
    # ... all routes routes ... 
    end 
    match '*path' => 'your_controller#your_action', via: :all 
end 

次に、あなたのコントローラの内部では、などrequest.subdomainへのアクセス、request.domainrequest.pathを、持っているだろうと、あなたはあなたに合うためにあなたのリダイレクトを構築することができます必要があります。

関連する問題