允许访问子域上的一个页面,如果尝试访问其他页面,则重定向到主域

时间:2018-12-18 08:31:42

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

允许访问子域(campaigns/test)上的一个页面(aap.example.com),如果尝试访问其他页面,则重定向到主域(example.com

app.example.com是我的主域example.com的子域,因此相同的Rails应用程序正在域和子域上运行。

我尝试了一些解决方案,例如在routes文件和nginx文件中添加约束,但没有得到我所需要的。

routes.rb

constraints(Subdomain) do match '/campaigns/:slug' => 'campaigns#show', via: [:get] match "/cam_enquiry" => "campaigns#cam_enquiry", via: [:post] end

subdomain.rb模块

class Subdomain def self.matches?(request) case request.subdomain when 'app', '', nil false else true end end end

如果您需要更多详细信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

定义所有路由,然后为app子域定义约束。您需要匹配test路由,并将重定向用于所有其他子域路由。在重定向参数中仅指定空白子域,在这种情况下,它将从请求中获取所有其他信息,并且仅将子域更改为主域

get 'campaigns/test', to: redirect(subdomain: 'app'), constraints: { subdomain: '' }
get '/campaigns/:slug', to: 'campaigns#show'
post '/cam_enquiry', to: 'campaigns#cam_enquiry'

constraints subdomain: 'app' do
  get 'campaigns/test', to: 'contoroller#action'
  get '/*any', to: redirect(subdomain: '')
end