如何将所有路由从子域重定向到路径

时间:2016-04-14 18:30:36

标签: ruby-on-rails ruby-on-rails-4 nginx devise rails-routing

我有一个应用程序,其中请求可以来自域或子域。例如:

admin.example.com重定向到example.com/admin。我通过nginx配置实现了这一点。但问题是,对于每个环境/ dev机器,我们需要设置nginx.conf。我想在铁路线路上做。

即。从admin.example.com收到的所有请求都应通过rails路由重定向到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

由于

1 个答案:

答案 0 :(得分:0)

我尝试将约束块中的所有路由与" catch-all" -route:

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

然后,在您的控制器内部,您可以访问request.subdomainrequest.domainrequest.path等,然后您可以构建重定向以满足您的需求。< / p>