Согласно Документам Heroku для пользовательских доменов, вы можете сделать это так:
class ApplicationController
before_filter :ensure_domain
APP_DOMAIN = 'myapp.mydomain.com'
def ensure_domain
if request.env['HTTP_HOST'] != APP_DOMAIN
# HTTP 301 is a "permanent" redirect
redirect_to "http://#{APP_DOMAIN}", :status => 301
end
end
end
Я использую этот метод, и он отлично работает. Обратите внимание, что, поскольку перенаправление возвращает статус http 301 (постоянное перенаправление), ваш сайт не будет оштрафован за дублированный контент.
Статус 301 - единственная точка, отсутствующая в решении Маркуса, но я думаю, что она важна, если вы беспокоитесь о SEO.
Редактировать: Что-то, чего нет в документах, и я забыл упомянуть - вы должны исключить среды, к которым не требуется перенаправление. Вы можете изменить оператор if
на что-то вроде:
if request.env['HTTP_HOST'] != APP_DOMAIN && ENV["RAILS_ENV"] != 'development'