2009-10-03 3 views
0

У меня около 10 доменов, указывающих на мое приложение Heroku (навсегда потребовалось установить имя для сайта - не спрашивайте), все, что я дал различным людям в разное время.Лучший способ привлечь всех моих пользователей к одному домену?

Теперь, когда я решил назвать доменное имя (назовите его «example.com»), я хочу, чтобы существующие домены работали, но перенаправлялись на example.com. Каков наилучший способ сделать это?

Вот мой подход (в application_controller.rb):

before_filter :ensure_domain 

def ensure_domain 
    canonical_domain = 'example.com' 

    if request.env['HTTP_HOST'] != domain && ENV["RAILS_ENV"] == 'production' 
    redirect_to request.protocol + canonical_domain + request.env["REQUEST_URI"] 
    end 
end 

Является ли это правильный подход?

+0

Это хорошее имя: короткое, своеобразное и легко запоминающееся. – pavium

ответ

3

На самом деле я хотел бы сделать это в Apache:

<VirtualHost ...> 
    ServerName example.com 
    .... # your real server config 
</VirtualHost> 

<VirtualHost ...> 
    ServerName olddomain.com 
    ServerAlias other-olddomain.com yetanotherone.com 
    Redirect permanent/http://example.com/ 
</VirtualHost> 

Обратите внимание, что косая черта на URL переадресации важна. нет, он перенаправит все, что приходит в http://olddomain.com/foo/bar?foo=bar, http://example.com/foo/bar?foo=bar

0

Я думаю, что поддерживать логику в моем приложении Rails проще в управлении (плюс я не знаю, как настроить Apache). Я закончил с этим:

before_filter :ensure_domain 

def ensure_domain 
    canonical_domain = 'example.com' 

    if request.host != canonical_domain && ENV["RAILS_ENV"] == 'production' 
    redirect_to request.protocol + canonical_domain + request.request_uri 
    end 
end 
Смежные вопросы