允许访问子域(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
如果您需要更多详细信息,请告诉我。
答案 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