我有一个应用程序,其中请求可以来自域或子域。例如:
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
由于
答案 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.subdomain
,request.domain
,request.path
等,然后您可以构建重定向以满足您的需求。< / p>