Às vezes, você deseja usar um único nome de host para seu aplicativo e tem solicitações de outros nomes de host redirecionadas para o host canônico.
Exemplo: myfancyapp.herokuapp.com/*
deve redirecionar para myfancyapp.com/*
`
Você pode usar a gema de middleware de rack como rack-canonical-host ou rack-rewrite .
Você também pode obter o mesmo resultado sem nenhuma gema adicional usando restrições nas rotas do Rails.
no config/routes.rb
if Rails.env.production?
constraints(:host => /^(?!myfancyapp.com)/i) do
match "/(*path)" => redirect {
|params, req| "http://myfancyapp.com/#{params[:path]}"
}, via: [:get, :post]
end
end
Se você – como eu – prefere manter suas configurações nas variáveis env, você pode usar algo nesse sentido
if ENV['CANONICAL_HOST']
constraints(:host => Regexp.new("^(?!#{Regexp.escape(ENV['CANONICAL_HOST'])})")) do
match "/(*path)" => redirect { |params, req| "http://#{ENV['CANONICAL_HOST']}/#{params[:path]}" }, via: [:get, :post]
end
end