【问题标题】:How to redirect all routes from a sub-domain to a path如何将所有路由从子域重定向到路径
【发布时间】:2016-04-14 18:30:36
【问题描述】:

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

admin.example.com 正在重定向到example.com/admin。我通过 nginx 配置实现了这一点。但问题是,对于每台环境/开发机器,我们都需要设置 nginx.conf。我想在 Rails 路线级别做。

即从admin.example.com 收到的所有请求都应该通过rails 路由重定向到example.com/admin。另外,我需要确保devise 身份验证不会中断。

sn-p of 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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我会尝试将约束块内的所有路由与“catch-all”路由结合起来:

    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 等,并且您可以构建您的重定向以满足您的需求。

    【讨论】:

      猜你喜欢
      • 2019-07-16
      • 2018-10-22
      • 2016-04-03
      • 2014-04-27
      • 2016-10-07
      • 2020-02-16
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      相关资源
      最近更新 更多